this.method.bind(this)的方法是什么?

时间:2015-04-14 17:56:38

标签: javascript angularjs oop bind

第一次遇到代码:

var Controller = function($scope){
    this._scope = $scope;
}

Controller.$inject = ['$scope'];

Controller.prototype.augmentScope = function() {
    this._scope.a = {
        methodA: this.methodA.bind(this)
    }
}

我真的不明白有什么意义。有什么解释吗?

1 个答案:

答案 0 :(得分:0)

它假设在闭包范围内(如果它不在全局范围内,如window),则有一个名为methodA的方法。然后,因为这实际上是提到的封闭范围,它将提醒它并分配它也可以通过对象a使用。 因此,您可以执行以下操作:methodA()a.methodA()

编辑以解释关闭: 尽管Javascript在语法上与Java / C ++非常相似,但是在将函数实例化为对象的意义上它与它们两者完全不同,它会记住它实例化的范围。我强烈建议任何人做的不仅仅是偶然JS(如​​果有这样的事情),调查this article。 JS中的this将取决于它是否是在实例化函数内创建的 - AKA:new MyClass()。引用文字对象,例如:

var myObj={a:this.b}

不会创建新的this,默认情况下会引用封闭范围。如果没有创建,则它将是全局对象,例如浏览器中的window