下面显示的 jsFiddle 和代码是两个本质上做同样事情的示例。在尝试调用first();
或this.first();
在任一示例中,都会引发未定义的错误。我可以稍后通过实例调用函数,但在尝试使用init(){...}()
构造函数实例化对象时不能。我把 init() 放在底部,认为这是一个操作顺序,但事实并非如此。这不像我认为的那样工作。
我很想知道应该如何做到这一点,以及为什么不能做到这一点。
//create and return an obj
var fishSticks = function(){
return {
first: function(){
document.getElementById('output').innerHTML="Success";
},
init: function(){
try{
first(); //err
this.first(); // also err
}catch(e){
document.getElementById('output').innerHTML=e.toString();
}
}()
}
}
//do function stuff and then return 'this'
var fishFillet = function(){
var first = function(){
document.getElementById('output2').innerHTML="Success";
}
var init = function(){
try{
first(); //err
this.first(); // also err
}catch(e){
document.getElementById('output2').innerHTML=e.toString();
}
}()
return this;
}
var test = new fishSticks();
var test2 = new fishFillet();
</p>