根据官方文档设置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;
}
this._Default _Number你都没定义
感谢!官方文档里似乎没说明get,set不是显式调用的方法
还是说原生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+"但是我什么都不会做的");
}
},
get/set里面都有调用this._ Default_Number, 你不先声明一下,你直接调用Default_Number的get/set方法就会报错
js实在是灵活的可爱又可怕啊
除了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赋予了初值
多谢解答!感激不尽
