第一次遇到代码:
var Controller = function($scope){
this._scope = $scope;
}
Controller.$inject = ['$scope'];
Controller.prototype.augmentScope = function() {
this._scope.a = {
methodA: this.methodA.bind(this)
}
}
我真的不明白有什么意义。有什么解释吗?
答案 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