如何从内部方法Javascript访问基础对象

时间:2014-02-22 14:53:59

标签: javascript

我写了一个课程,这是一个从中抽取的片段来证明我的问题。

<!--language:lang-js-->    
var myclass = function () {
    this.addItem = function () {
        //generateDiv and append..
        //generatedeletebtn and append
        btn.onclick = this.deleteItem; 
    }
    this.deleteItem = function () {
        console.log(this);
    }
}

deleteItem函数中,this表示单击的HTML元素。有没有办法可以直接访问myclass对象?

我尝试过改变 div.onclick = this.deleteItem 至  div.onclick = this.deleteItem(this),只要访问对象,但括号会调用该函数,并在添加项目后立即将其删除,这样就没有用了。

2 个答案:

答案 0 :(得分:2)

这看起来像是bind

的工作
btn.onclick = this.deleteItem.bind(this);

您可以将bind视为{{1>}在另一个函数B 中引用的函数A ,它始终调用 A < / em>将上下文作为this.deleteItem的第一个参数。

如果你不能认为你的环境中有bind,那么 MDN 上就有一个polyfill。

答案 1 :(得分:1)

您可以使用闭包在myclass变量中存储对that对象本身的引用。然后,当最终调用deleteItem时,它应该将myclass对象用作that

var myclass = function () {
    var that = this;

    this.deleteItem = function () {
       console.log(that);
    }
}

您不必担心使用此填充物填充。