也许你会发现问题。控制台总是说:
TypeError:this._init不是函数。 (' this._init()',' this._init'未定义)
nodes = [];
for (var i = 0; i < 3; i++) {
var newNode = new Node(i*100,0);
nodes.push(newNode);
};
function Node(posX, posY, parent) {
if (typeof parent === 'undefined') { parent = 0; }
this.parent = parent;
this.children = [];
this.text = "Node";
this.posX = posX;
this.posY = posY;
this._init();
this._init = function() {
alert("test");
}
}
答案 0 :(得分:1)
您需要在调用之前定义该函数:
function Node(posX, posY, parent) {
if (typeof parent === 'undefined') { parent = 0; }
this.parent = parent;
this.children = [];
this.text = "Node";
this.posX = posX;
this.posY = posY;
this._init = function() {
alert("test");
}
this._init();
}
如果您在其他地方定义函数之前调用了函数,则可能会对此感到困惑。在某些情况下,您的功能可能会被提升为#34; 到你的脚本的顶部。以下显示完全合法的调用:
isItHoisted();
function isItHoisted() {
console.log("Yes!");
}
http://adripofjavascript.com/blog/drips/variable-and-function-hoisting
正如您现在可能已经知道的那样,对象的方法功能不会被提升,因此您会收到您所看到的错误。
答案 1 :(得分:0)
在定义之前,您似乎正在调用_init。
this._init = function() {
alert('test');
}
this._init();