javascript对象初始化问题

时间:2014-01-25 00:34:18

标签: javascript object

我正在尝试在我的情况下初始化一个方法。我有类似

的东西
var test = new testObj()

 function testObj(){
        this.init();
    }

 testObj.prototype.init = function(){        
    //do something
 }

但是,我从控制台收到testObj has no method of init错误。

我不确定会发生什么。有人可以帮我解决这个问题吗?非常感谢!

1 个答案:

答案 0 :(得分:3)

这是因为你的剧本的顺序

function testObj() {
    console.log(this)
    this.init();
}

testObj.prototype.init = function () {
    //do something
}

var test = new testObj();

函数声明将hoisted放到声明范围的顶部,因此您可以创建一个新的testObj实例,但是当调用构造函数时,原型的增强没有发生你不会得到init方法。

在提升代码后如下所示,执行new testObj()时,它会调用构造函数,但init方法尚未添加到testObj

function testObj() {
    console.log(this)
    this.init();
}

var test = new testObj();

testObj.prototype.init = function () {
    //do something
}