JavaScript Es6引用内部函数吗?

时间:2016-04-06 17:01:36

标签: javascript ecmascript-6

Es6类this始终引用创建它的对象,即使在内部函数内部也是如此,因为它var _this = thisthis的任何引用都将成为_this }。但是,如果我需要在该类中引用内部函数的上下文,该怎么办?

class Body {
    constructor () {
        Hooks.subscribe('', () => {
            // I want this to reference the context that is within this method
            // elsewhere because bind,apply,call sets new context
        })
    }
}

如何在es6类中引用Hooks.subscribe的上下文?

2 个答案:

答案 0 :(得分:1)

假设你想引用Hooks的this

并假设subscribe函数返回原始hook对象

你可以这样做:

class Body {
    constructor () {
        const hook = Hooks.subscribe('', () => {
            // `this` will still reference `Body`'s objects this
            // `hook` will reference the hook object
        });
    }
}

答案 1 :(得分:0)

因为您正在使用箭头函数this保留在父级的范围内。要将其重新分配给当前范围,请删除箭头功能。

class Body {
    constructor () {
        Hooks.subscribe('', function() {
            // `this` is now the context of Hooks.subscribe
        });
    }
}