我知道当我需要访问类成员函数时,我必须在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);
});
}}
感谢任何帮助!
答案 0 :(得分:1)
此类示例代码正在运行:
var c = new MySimpleClass({calculate: function(f) {f()}}, [1,2]);
c.doStuff(function(){alert("hi");})
我认为你的代码不起作用,因为你在代理类本身中也定义了一个“self”变量。您可以通过将班级中的“self”重命名为任意内容来检查:“selfXXX”
答案 1 :(得分:0)
如何将contentArray作为参数发送到此匿名函数,而不是仅发送'data'?