2

我正在尝试编写其他人的代码,但我真的很想知道他们是如何做到这一点的。代码很长,所以我将尝试给出一个简单的示例来说明我想要找出的内容。

我有以下内容:

var obj = function(){
this.obj1 = "test1";
this.obj2 = "test2";
};

var inst = new obj;
alert(inst);

这将输出 [object]。我想知道该怎么做,是让这个返回“test1”的值改为 - 但仍然让我能够调用对象成员,这样我也可以做

alert(inst.obj2);

并得到一个输出:'test2'。

我认为我可以做到的方式是这样的:

var obj = function(){
    this.obj1 = "test1";
    this.obj2 = "test2";
    return this.obj1;
};

var inst = new obj;
alert(inst);

但这也返回 [object]

这就是我试图破译的代码似乎正在做的事情。语法要复杂得多——我认为它使用闭包和原型,但我仍然没有理解这些,所以不太明白发生了什么。

非常感谢!

4

1 回答 1

5

alert显示除 之外的其他内容[object Object],请在对象上定义.toString()方法。

function MyObj() {
    this.obj1 = "test1";
    this.obj2 = "test2";
};

MyObj.prototype.toString = function() {
    return this.obj1;
};

var inst = new MyObj();
alert(inst);   // will show "test1"
于 2013-05-31T12:37:27.007 回答