2

我知道当我需要访问类成员函数时,我必须在 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); 
    });
}}

任何帮助表示赞赏!

4

2 回答 2

1

您的班级的此示例代码正在运行:

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

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

于 2012-05-09T12:33:27.017 回答
0

在这个匿名函数上发送 contentArray 作为参数,而不是只发送 'data' 怎么样?

于 2012-05-09T12:38:06.840 回答