根据官方文档设置get/set方法似乎无效啊?要怎么使用set/get方法?

根据官方文档设置get/set方法,在onLoad中调用~为什么会出错?

图片可用新标签打开

get,set不是显式调用的方法

properties:{
    _Default_Number: 0,
    Default_Number: {
        get: function() {
            return this._Default_Number;
        },
        set: function(value) {
            this._Default_Number = value;
        }
    },
}

onLoad() {
    this.Default_Number = 100;
}
1赞

this._Default _Number你都没定义

1赞

感谢!官方文档里似乎没说明get,set不是显式调用的方法:joy:还是说原生js里的get/set方法本身就不用显示调用?

原来如此!难怪this.Default_Number一直是null

你好~请问为什么还要再前面定义一次_Default_Number?

相当于放一个变量保存值

1.当你对Default_Number进行赋值的时候会调用Default_Number的set函数,比如 Default_Number = 1
2.当你对Default_Number进行取值的时候会调用Default_Number的get函数,比如 a = Default_Number
3.Default_Number的get,set跟_Default_Number什么关系都没有,你甚至可以这样写

Default_Number: {
        get: function() {
            return "虽然我叫number,但我就是要返回string";
        },
        set: function(value) {
            cc.log("虽然你给我传了"+value+"但是我什么都不会做的");
        }
    },
1赞

get/set里面都有调用this._ Default_Number, 你不先声明一下,你直接调用Default_Number的get/set方法就会报错

1赞

js实在是灵活的可爱又可怕啊:joy:

除了PHP,JS应该是最好的语言了

最近才开始接触js,感觉太简单了,但是简单到容易出错,有些语法莫名其妙的

当你为Default_Number定义get/set访问器时
this.Default_Number = 100;//这种行为就等于是调用 this.Default_Number.set(100)函数
cc.log(this.Default_Number)//(this.Default_Number)则是调用this.Default_Number.get()函数;

所以Default_Number本身不算是变量了,而是以变量的形式调用set/get函数,所以才需要另一个变量来保存它set/get的值,也就是你这里用的_Default_Number。
__Default_Number作为对象的属性也可以不用声明,get时会返还undefined,不会报错。
如果需要初始化,直接使用
this.Default_Number = 100; 等于=> this.Default_Number.set(100); 等于=> this.__Default_Number = 100;
相当于直接为_Default_Number赋予了初值

多谢解答!感激不尽