function dTree() {
return {
init : function(data) {
this.data = data;
},
node : function(i){
return '' + i;
}
}
};
dTree.prototype.toString = function() {
var str = '';
for(var i = 0; i < this.data.length; i++)
{
str += this.node(this.data[i]);
};
return str;
}
dTree1 = new dTree();
dTree1.init([1,2,3]);
alert(dTree1+'')
我希望它输出123
如何正确地做到这一点?
答案 0 :(得分:4)
这不是你如何构建构造函数。构造函数不返回任何内容,它们操纵this
对象:
function dTree() {
this.init = function(data) {
this.data = data;
};
this.node = function(i){
return '' + i;
};
}
你也可以将toString
的定义粘贴到构造函数中,除非你正在做一些特别的事情:
function dTree() {
this.init = function(data) {
this.data = data;
};
this.node = function(i) {
return '' + i;
};
this.toString = function() {
var str = '';
for(var i = 0; i < this.data.length; i++)
{
str += this.node(this.data[i]);
};
return str;
};
}
答案 1 :(得分:2)
您正在从构造函数返回一个普通的新对象,构造函数中的this
对象根本就没有被使用,并且该对象是分配了正确的原型对象的对象。
function dTree() {
this.init = function(data) {
this.data = data;
};
this.node = function(i){
return '' + i;
};
}
dTree.prototype.toString = function() {
var str = '';
for(var i = 0; i < this.data.length; i++) {
str += this.node(this.data[i]);
};
return str;
};
dTree1 = new dTree();
dTree1.init([1,2,3]);
alert(dTree1 + '');