Laya源码中的 get set
程序员文章站
2022-05-05 12:37:10
...
在Label.as版本中,是这样的:
override public function get width():Number {
if (_width || _tf.text) return super.width;
return 0;
}
/**
* @inheritDoc
*/
override public function set width(value:Number):void {
super.width = value;
_tf.width = value;
}
对应到laya.core.js是这样的:
__getset(0,__proto,'width',function(){
if (this._width || this._tf.text)return Laya.superGet(Component,this,'width');
return 0;
},function(value){
Laya.superSet(Component,this,'width',value);
this._tf.width=value;
});
getset:function(isStatic,o,name,getfn,setfn){
if(!isStatic){
getfn && Laya.un(o,'_$get_'+name,getfn);
setfn && Laya.un(o,'_$set_'+name,setfn);
}
else{
getfn && (o['_$GET_'+name]=getfn);
setfn && (o['_$SET_'+name]=setfn);
}
if(getfn && setfn)
Object.defineProperty(o,name,{get:getfn,set:setfn,enumerable:false});
else{
getfn && Object.defineProperty(o,name,{get:getfn,enumerable:false});
setfn && Object.defineProperty(o,name,{set:setfn,enumerable:false});
}
},
注意Laya.superSet第一个参数,要传父类的名称
推荐阅读
-
Eclipse开发环境导入android sdk的sample中的源码
-
Android源码中final关键字的用法及final,finally,finalize的区别
-
解决java 查看JDK中底层源码的实现方法
-
C#中关于zip压缩解压帮助类的封装 附源码下载
-
详解Python中dict与set的使用
-
浅谈MySQL存储过程中declare和set定义变量的区别
-
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
-
详解Python中 __get__和__getattr__和__getattribute__的区别
-
Python中的 enum 模块源码详析
-
详解ES6中的Map与Set集合