我正在使用函数作为类的表示形式。
function ClassOne()
{
this.doFunc = function() {
console.log("doFunc output");
}
}
function ClassTwo()
{
this.one = ClassOne();
console.log(this.one); // == undefined ???
this.init = function() {
this.one.doFunc();
}
this,init();
}
ClassTwo();
但是我正在努力在另一个函数中使用一个函数。
例如,上面的代码返回“无法读取未定义的属性'doFunc'”
这是为什么。一个==未定义?
答案 0 :(得分:2)
如果您在函数内部分配了this
的属性,通常表明该函数打算与new
一起用作构造函数,例如:
this.one = new ClassOne();
否则,如果函数不返回任何内容……那么,什么也不会返回(=> undefined
)
function ClassOne()
{
this.doFunc = function() {
console.log("doFunc output");
}
}
function ClassTwo()
{
this.one = new ClassOne();
console.log(this.one);
this.init = function() {
this.one.doFunc();
}
this.init();
}
ClassTwo();
或者,您可以让ClassOne
显式地返回带有doFunc
属性的对象,从而可以在没有new
的情况下调用该对象:
function ClassOne()
{
return {
doFunc() {
console.log("doFunc output");
}
}
}
function ClassOne() {
return {
doFunc() {
console.log("doFunc output");
}
}
}
function ClassTwo() {
this.one = ClassOne();
console.log(this.one);
this.init = function() {
this.one.doFunc();
}
this.init();
}
ClassTwo();