cocos组件脚本中的this指什么

继承于组件cc.Component的类中,this指的是什么,既然cc.Class函数返回的是一个构造函数,那么在这个构造函数中this指什么,我打印出this的方法,说明this是一个对象,那么它就是cc,Class构造函数new出的对象么,那么为什么在构造函数中已经有了对象呢,这个不太理解

1赞

当前环境,上下文

this没有一个特定的对象值,根据当前环境,所指向不同的内容,this是默认存在的。可以这样理解,在引擎中,自动帮你声明了this这个对象,在不同的环境中,自动帮你赋值当前的指向的内容(也就是上下文环境),所以在使用的时候,要想知道他具体指向的内容是什么,这个看你对 “上下文环境”怎么理解了, 这个概念比较抽象

那么请问在组件类,继承cc.Component中的onload方法中的this指向哪个对象呢,这个对象是在什么时候new的呢,为什么我在onload函数中去用for in 能够打印出this的全部属性呢

继承,或者 不继承 this都存在, this就是一个关键字,类似于 break continue 等, this的作用就是指向当前上下文环境,在JS、中指向的是当前类的实例

先去百度一下,, this,,是什么东西吧,,看来你是对于 this 是什么都不太清楚,先搞清楚这个,在来看这些代码,就会比较清楚了

还有 上下文环境

兄弟,我写个代码啊,比如在cocos脚本中,我这样写,
function A(){

cc.log(typeof this);
}
然后执行A();
cocos中会打印undefined
我就是不明白这个,这个以前我在写网页的时候,在网页上执行会返回一个object,这个函数就当做window下的全局对象了

不好意思,误解了,早这样说问题就很清楚了,给你截两个图,估计你就明白了


我现在用的是 creator 1.5.1, 目前引擎在编辑代码的时候使用的是严格模式,这个是严格模式下 this的说明 链接http://www.jb51.net/article/118506.htm 里面讲的比较详细

js 的 this 指向 當前函數的 執行上下文
函數 如果 是object的屬性 指向 此object的實例
函數 如果 不是object的屬性 默認值爲 undefined

但你可以通過函數的 bind(ctx) 方法 返回一個新的函數 使它的this指向 你傳入的 參數
比如你的 func A 不是obj的屬性 所以 this 爲undefined
如果 你希望 調用A方法 但this是一個 字符串 你可以這樣寫 A.bind(“任意參數”)();

cocos 組件的 onload 是一個 函數
並且 onload 是 組件object 的一個 屬性 所以 它的 this 指向了當前組件

1赞

JavaScript中的构造函数:
function myCls(a, b) {
this._a = a;
this._b = b;
}
var testObj = new myCls(1, 2);
myCls(3, 4);
console.log(_a, _b, testObj._a, testObj._b);
自己跑一下看结果喽……
js函数内部本来就是可以用this的,这和cocos无关
new 的时候js会产生出一个新的obj,绑定到函数上,函数内可以通过this来使用它,相当于构造函数
不用new直接调用的时候,this就是全局对象,以上代码相当于定义了两个全局变量

多谢,兄弟

https://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/

看看这个就懂了

thanks

兄弟,这才是我要问的,就你看懂了