Laya源码中的 get set

在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第一个参数,要传父类的名称

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • By 王小鹿 我要讲一个故事,一个关于木子的故事 故事,似乎要从两年前说起来了。嗯,就是两年前吧,我现在也记得...
    猫咪和樱花阅读 546评论 0 0
  • 清空大脑,让你的大脑运转更高效
    奋斗De小可爱阅读 123评论 0 0
  • 1.读的什么书:《创新职业指导-新理念》、《职业指导与就业发展》、《人格科学》 2.阅读有效时间:90分钟 3.阅...
    钧陶阅读 343评论 0 0