在JavaScript中使用私有方法時,遇到了有線問題。裏面的私有方法「這個」引用了返回的句柄窗口對象,而不是功能,其中它包含英寸私有方法中的「this」的上下文
這裏的代碼,我指的是
function MyComponent(elem) {
alert(this.constructor.name) //returns reference to MyComponent
function privateMethod() {
alert(this.constructor.name)
//returning Window Object, instead of privateMethod function reference
}
privateMethod()
}
new MyComponent(document.createElement('span'))
我設法解決的bug通過引入MyComponent函數中的「self」引用。
function MyComponent(elem) {
var self = this;
alert(this.constructor.name) //returns reference to MyComponent
function privateMethod() {
alert(self.constructor.name)
//after passing the "self" reference its working
}
privateMethod()
}
new MyComponent(document.createElement('span'))
但是還有一件事讓我感到困惑,那就是私有方法中的「this」引用是如何返回Window對象的句柄的。
您可以查看「this」:http://alistapart.com/article/getoutbindingsituations –