this.node和this有什么区别

为什么文档有时候用this.node,我用this就可以,有时候则不行,this代表这个本身,那this.node,那代表什么

在没有重新绑定的情况下,this指当前这个js脚本,比如要调用当前脚本的一行test函数,则this.test(),而this.node指脚本所在的节点

1赞

那我在点击的回调方法里面this是指这个节点么

大神,重新绑定是指this就是代表这个节点和这个JS么?

我不太明白,贴代码看看,标好this的序号

我感觉你还是对this的理解不够完整吧,this是会根据当前的运行环境而变化,它是变化的,所以有时候使用this时会报错,比如:监听函数的声明采用了匿名函数
someNode.on(cc.Node.EventType.TOUCH_START, function(evt){
//this.methodA();这样调用的话,会报错误,这里的this指向的是someNode对象;
});
}

this指向的对象发生了变化,指向的时someNode,而并非你当前脚本,匿名的someNode对象并没有node属性,所以会报错。
不知道能不能解决你的问题

在教程里,this.node可以调整透明度,但我在点击的回调方法里面,this.node却异常,要this才行,这和之前对this的感觉不一样,而且在 onLoad里面,this和this.node都可以,但偏偏在点击的回调方法里面this.node就会报错,onLoad里面,this不应该也代表节点本身么

onLoad 里面的this呢?大神

最简单的理解
this 为该脚本
this.node 为挂了该脚本的节点
(但不能完全这样理解,因为你某些函数指定的东西不同,他也会随时变的)

你上面那个报错是不是因为你的回调是在button组件里面选出来的?
或者你说说你是怎么做的,截个图发个demo看看

嗯大概能理解了,这个this和文档那边没怎么说,和carlosyzy说的一样,在回调里面,this就是指该节点了,谢谢

在回调方法中,this的指向对象已经发生了变化,已经并非当前脚本了,所以找不见node属性
this和this.node你可以看一下文档http://www.cocos.com/docs/creator/scripting/access-node-component.html
仔细看可以发现this.node指的是节点,而this指的是组件。节点和组件文档也有说明

嗯,非常感谢

是是是,我表达不够详细,但我只想解释最原始的this的指向,对于匿名函数,你不给他绑定this,它是没有this这个属性的,打印出来的结果为undefine,此时的this根本就没有,从何谈起?所以我才不说运行环境变化时的情况,运行环境变化时把自己想要的this传进去就好了。

this就是指代当前对象

所以匿名函数里面this为undefine咯

undefine在js里表示没有值

你文档里看到的this应该是指脚本的组件对象,也就是当前脚本组件。this.node是当前脚本组件所挂在的节点对象。

点击事件里面的this指向的是绑定者 也就是 this.node, 所以回调里面的this==this.node 。

js的this是随时变化的,看具体情况。