我创建了对象var myObj = new functon () {...}
。
在该对象中,我添加了如下函数:
var myObj = new function () {
this.func1 = function() {
func2();
}
this.func2 = function() {
...
}
}
正如您在func1
中所看到的,我尝试调用func2
,但始终未定义。为什么?因为一切都在一个对象中。
答案 0 :(得分:1)
你应该像这样打电话给func2
var myObj = new function () {
this.func1 = function () {
this.func2();
}
this.func2 = function () {
console.log('func2');
}
}
myObj.func1();
如果你想要func2
和this.
打电话,你可以这样做
var myObj = new function () {
function func2() {
console.log('func2');
}
this.func1 = function() {
this.func2();
func2();
}
this.func2 = func2;
}
myObj.func1();
答案 1 :(得分:1)
将脚本更改为
var myObj = function () {
var self = this;
this.func1 = function () {
self.func2();
};
this.func2 = function () {
...
};
};
答案 2 :(得分:1)
未定义,因为您没有本地变量func2
。所以正确的引用应该是this.func2()
。
但即使在这种情况下,您的代码也不是理想的构造对象(混合构造函数和匿名函数)(尽管正确)。在这种情况下,最好先使用对象文字,而不是创建构造函数来创建一个单独的对象实例:
var myObj = {
func1: function () {
this.func2();
},
func2: function () {}
};
答案 3 :(得分:1)
除了他人提供的解决方案之外。如果你打算调用一个像这样定义的javascript函数
var func = function(){}
函数定义需要在函数调用之前。
另一种定义函数的方法并不重要。
function func(){}
所以整体代码应该是
var myObj = function(){
this.func2 = function(){
...
}
this.func1 = function(){
func2();
}
}
答案 4 :(得分:0)
var myObj = functon(){
var current = this;
this.func1 = function(){
current.func2();
}
this.func2 = function(){
...
}
};