我正在尝试在我的情况下初始化一个方法。我有类似
的东西var test = new testObj()
function testObj(){
this.init();
}
testObj.prototype.init = function(){
//do something
}
但是,我从控制台收到testObj has no method of init
错误。
我不确定会发生什么。有人可以帮我解决这个问题吗?非常感谢!
答案 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
}