从javascript中的匿名函数访问类成员

时间:2012-05-09 12:21:07

标签: javascript function scope anonymous

我知道当我需要访问类成员函数时,我必须在JS类中保留对 this 的引用。但是,我目前正在努力使用以下(简化)代码:

function MySimpleClass(p, arr) {
this.proxy = p;
this.contentArray = arr;

this.doStuff = function(callback) {
    var self = this;

    // at this point this.contentArray holds data

    this.proxy.calculate(function(data) {

        // inside the anonymous function this.contentArray is undefined

        var el = self.contentArray[0]; // <-- will fail
        // do something with el

        callback.call(this, data); 
    });
}}

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

此类示例代码正在运行:

var c = new MySimpleClass({calculate: function(f) {f()}}, [1,2]);
c.doStuff(function(){alert("hi");})

我认为你的代码不起作用,因为你在代理类本身中也定义了一个“self”变量。您可以通过将班级中的“self”重命名为任意内容来检查:“selfXXX”

答案 1 :(得分:0)

如何将contentArray作为参数发送到此匿名函数,而不是仅发送'data'?