我创建了一个JavaScript类,它获取对函数的引用作为其构造函数参数。这个类有一个init()函数,它调用传递给构造函数的引用函数的init()函数。但是,这会导致错误,指出this.aFunction.init()未定义。
这是代码:
function AClass(aFunction) {
this.aFunction = aFunction;
}
AClass.prototype.init = function() {
this.aFunction.init();
}
var aClass = new AClass(function() {
return {
init: function() {
alert('success');
}
};
});
alert('Before init');
aClass.init();
提出了一个jsFiddle
答案 0 :(得分:1)
您只是忘了执行一项功能,请参阅http://jsfiddle.net/8cgpH/5/
var aClass = new AClass(function() {
return {
init: function() { alert('success'); }
};
});
你要交给AClass的那个参数是一个函数,一旦调用它就会返回一个包含方法init()
的对象(你忘了这样做) - 换句话说:你只是递给一个class,但不是该类的实例。
var aClass = new AClass(function() {
return {
init: function() { alert('success'); }
};
}()); // <---
答案 1 :(得分:1)
你的函数返回一些东西。函数本身没有属性init
。调用函数来获取具有其属性的对象(aFunction
不再是函数,而是init
的对象,因此您的命名有点模糊):http://jsfiddle.net/8cgpH/8/。
this.aFunction = aFunction();
答案 2 :(得分:1)
您需要调用 aFunction
来获取其返回值。现在你正在做的是在函数对象本身中寻找属性init
,它不存在。
AClass.prototype.init = function() {
this.aFunction().init();
};
答案 3 :(得分:0)
var aClass = new AClass({
init: function() { alert('success'); }
});
你的aFunction只是一个obj