JS 脚步开发过程中,经常要用到 this 对象,例如
cc.eventManager.addListener({
cc.log(this);
event: cc.EventListener.TOUCH_ONE_BY_ONE,
onTouchBegan: (touch, event) => {
cc.log(this);
},
}, this.node);
两个log打印的都是是 node对象,如果把
onTouchBegan: (touch, event) => {
改为
onTouchBegan: function(touch, event) {
那么,两个log打印的分别为 node 对象和 class 对象了,
疑问1 :为什么会有所不同?
疑问2 :例如需要用到this的回调方法和异步方法,如何传入this对象比较合理?
cc.log(this);
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
onTouchBegan: function (touch, event) {
cc.log(this); ** // 这个this不是node对象**
},
}, this.node);
不建议使用 cc.eventManager 的接口了,会逐步被弃用。eventmanager 注册的 listener 回调的 this 是 EventListener 本身,跟最后传递的 this.node 没关系,this.node 是用来确定优先级的。
另外你在 {} 对象声明中调用函数是不合规范的写法
这个是在官方事例里面看到的,(touch , event) => {} 这个用法在里面的this 是 node对象,不理解这个;如果在{}声明中调用函数是不和规范的写法,那么合规范的写法应该是怎样的?有无案例可以贴出来?