本文整理汇总了C++中GetterSetter::isSetterNull方法的典型用法代码示例。如果您正苦于以下问题:C++ GetterSetter::isSetterNull方法的具体用法?C++ GetterSetter::isSetterNull怎么用?C++ GetterSetter::isSetterNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GetterSetter
的用法示例。
在下文中一共展示了GetterSetter::isSetterNull方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: objectProtoFuncLookupSetter
EncodedJSValue JSC_HOST_CALL objectProtoFuncLookupSetter(ExecState* exec)
{
JSObject* thisObject = exec->thisValue().toThis(exec, StrictMode).toObject(exec);
if (exec->hadException())
return JSValue::encode(jsUndefined());
auto propertyName = exec->argument(0).toPropertyKey(exec);
if (exec->hadException())
return JSValue::encode(jsUndefined());
PropertySlot slot(thisObject);
if (thisObject->getPropertySlot(exec, propertyName, slot) && slot.isAccessor()) {
GetterSetter* getterSetter = slot.getterSetter();
return getterSetter->isSetterNull() ? JSValue::encode(jsUndefined()) : JSValue::encode(getterSetter->setter());
}
return JSValue::encode(jsUndefined());
}
示例2: callSetter
void callSetter(ExecState* exec, JSValue base, JSValue getterSetter, JSValue value, ECMAMode ecmaMode)
{
GetterSetter* getterSetterObj = jsCast<GetterSetter*>(getterSetter);
if (getterSetterObj->isSetterNull()) {
if (ecmaMode == StrictMode)
throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
return;
}
JSObject* setter = getterSetterObj->setter();
MarkedArgumentBuffer args;
args.append(value);
CallData callData;
CallType callType = setter->methodTable(exec->vm())->getCallData(setter, callData);
call(exec, setter, callType, callData, base, args);
}
示例3: setDescriptor
void PropertyDescriptor::setDescriptor(JSValue value, unsigned attributes)
{
ASSERT(value);
// We need to mask off the PropertyAttribute::CustomValue bit because
// PropertyDescriptor::attributesEqual() does an equivalent test on
// m_attributes, and a property that has a CustomValue should be indistinguishable
// from a property that has a normal value as far as JS code is concerned.
// PropertyAttribute does not need knowledge of the underlying implementation
// actually being a CustomValue. So, we'll just mask it off up front here.
m_attributes = attributes & ~PropertyAttribute::CustomValue;
if (value.isGetterSetter()) {
m_attributes &= ~PropertyAttribute::ReadOnly; // FIXME: we should be able to ASSERT this!
GetterSetter* accessor = jsCast<GetterSetter*>(value);
m_getter = !accessor->isGetterNull() ? accessor->getter() : jsUndefined();
m_setter = !accessor->isSetterNull() ? accessor->setter() : jsUndefined();
m_seenAttributes = EnumerablePresent | ConfigurablePresent;
} else {
m_value = value;
m_seenAttributes = EnumerablePresent | ConfigurablePresent | WritablePresent;
}
}