public override RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno) { errormessage = null; errorno = 0; string name = TypeConverter.ConvertToString(argements[0].getValue(),null,null); bool isEnum = TypeConverter.ConvertToBoolean(argements[1].getValue(),null,null).value; if (string.IsNullOrEmpty(name)) { return(ASBinCode.rtData.rtUndefined.undefined); } ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj; if (!(obj.value is ASBinCode.rtti.DynamicObject)) { return(ASBinCode.rtData.rtUndefined.undefined); } ASBinCode.rtti.DynamicObject dobj = (ASBinCode.rtti.DynamicObject)obj.value; if (dobj is ASBinCode.rtti.DictionaryObject) { return(ASBinCode.rtData.rtUndefined.undefined); } if (dobj.hasproperty(name)) { dobj.setPropertyIsEnumerable(name,isEnum); } return(ASBinCode.rtData.rtUndefined.undefined); }
public override RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno) { errormessage = null; errorno = 0; string name = TypeConverter.ConvertToString(argements[0].getValue(),null,null); if (String.IsNullOrEmpty(name)) { return(ASBinCode.rtData.rtBoolean.False); } //固定实例属性 — 对象类定义的非静态变量、常量或方法; //继承的固定实例属性 — 对象类继承的变量、常量或方法; //动态属性 — 对象实例化后添加到其中的属性(在其类定义之外)。要添加动态属性,必须用 dynamic 关键字声明对象的定义类。 //return new ASBinCode.rtData.rtString(TypeConverter.ConvertToString(thisObj, null, null)); ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj; if (ClassMemberFinder.find(obj.value._class,name,null) != null) { return(ASBinCode.rtData.rtBoolean.True); } if (obj.value is ASBinCode.rtti.DynamicObject) { ASBinCode.rtti.DynamicObject d = (ASBinCode.rtti.DynamicObject)obj.value; if (d.hasproperty(name)) { return(ASBinCode.rtData.rtBoolean.True); } else { return(ASBinCode.rtData.rtBoolean.False); } } return(ASBinCode.rtData.rtBoolean.False); }
public override RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno) { errormessage = null; errorno = 0; string name = TypeConverter.ConvertToString(argements[0].getValue(),null,null); if (string.IsNullOrEmpty(name)) { return(ASBinCode.rtData.rtBoolean.False); } ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj; if (!(obj.value is ASBinCode.rtti.DynamicObject)) { return(ASBinCode.rtData.rtBoolean.False); } ASBinCode.rtti.DynamicObject dobj = (ASBinCode.rtti.DynamicObject)obj.value; if (dobj.hasproperty(name)) { if (dobj.propertyIsEnumerable(name)) { return(ASBinCode.rtData.rtBoolean.True); } else { return(ASBinCode.rtData.rtBoolean.False); } } else { return(ASBinCode.rtData.rtBoolean.False); } }