返回值并保留javascript对象的成员?

时间:2013-05-31 12:33:34

标签: javascript oop

我正在尝试找出其他人的代码而我真的被困在他们如何设法做到这一点上。代码很长,所以我会尝试给出一个简单的例子,说明我想要找到的东西。

我有以下内容:

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]

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

非常感谢!

1 个答案:

答案 0 :(得分: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"