Egret社区

egret 咋绑定this的作用域呢

2015-6-9 14:20
21776
1银子
ts确保this的作用域咋搞来着  
public add(name:string,fun: Function,frameRate: number=60): void
    {
        if (this.listener[name]) throw new Error("有了,别乱加");
        this.listener[name] = fun;
    }

我这里
传过来一个函数
执行的时候里面的this变成 this.llinstener 了!!





最佳答案

查看完整内容

其实不用那么费劲,记住一条规则即可:「不要直接用this关键字」。你在函数外先把this复制给一个变量,比如var self = this;注意这句一定是在函数外。然后在函数里都使用这个self去访问就行啦。TS里还有更简单的做法,就是用箭头函数。function add(name:string....):void{}可以改为这样声明:var add = (name:string...):void=>{},然后编译出的js代码就是我刚刚说的那种,编译器自动帮你把所有this关键字替换了一遍。 ...
分享到 :
0 人收藏

6 个回复

倒序浏览
dom  圆转纯熟 | 2015-6-9 14:20:12
enter334714 发表于 2015-6-9 14:47
没人回答。自己搞定private enterFrame(e: egret.Event): void {
        if (this._pause) return;
   ...

其实不用那么费劲,记住一条规则即可:「不要直接用this关键字」。你在函数外先把this复制给一个变量,比如var self = this;注意这句一定是在函数外。然后在函数里都使用这个self去访问就行啦。TS里还有更简单的做法,就是用箭头函数。function add(name:string....):void{}可以改为这样声明:var add = (name:string...):void=>{},然后编译出的js代码就是我刚刚说的那种,编译器自动帮你把所有this关键字替换了一遍。
enter334714  登堂入室 | 2015-6-9 14:47:34
没人回答。自己搞定private enterFrame(e: egret.Event): void {
        if (this._pause) return;
        var listen: Object;
        for (var f in this.listener) {
            listen = this.listener[f];
            listen["fun"].apply(listen["thisObj"]);
        }
    }

    public add(name:string,fun: Function,thisObj:any,frameRate: number=60): void
    {
        if (this.listener[name]) throw new Error("有了,别乱加");
        this.listener[name] = { "fun":fun,"thisObj":thisObj };
    }
enter334714  登堂入室 | 2015-6-16 17:32:40
dom 发表于 2015-6-16 10:39
其实不用那么费劲,记住一条规则即可:「不要直接用this关键字」。你在函数外先把this复制给一个变量,比 ...

var add = (name:string...):void=>{} 这个咋用啊。外面咋调用
dom  圆转纯熟 | 2015-6-17 09:11:46
enter334714 发表于 2015-6-16 17:32
var add = (name:string...):void=>{} 这个咋用啊。外面咋调用

只是函数的另一种声明方式,外部还是 add(name)这样调用
enter334714  登堂入室 | 2015-8-14 17:46:30
dom 发表于 2015-6-9 14:20
其实不用那么费劲,记住一条规则即可:「不要直接用this关键字」。你在函数外先把this复制给一个变量,比 ...

这样的做的好处是什么呢。
dom  圆转纯熟 | 2015-8-14 21:40:21
enter334714 发表于 2015-8-14 17:46
这样的做的好处是什么呢。

这不是为了有什么好处,是为了绕开JS的语言问题。谷歌一下「this引用 javascript」
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部