返回对象中的两个不同的返回

时间:2012-07-27 23:20:46

标签: javascript function object

我有这个函数返回一个对象:

String.prototype.test = function(a,b){
    var ob = {};
    ob[a] = b;
    return this || ob
}

//usage
"Test".test('hi','hello');

如果.hi未附加到测试中,我希望它返回字符串。

所以我需要这个例子:

"Test".test('hi','hello').hi;//returns: hello

要工作,但我还需要:

"Test".test('hi','hello'); //returns Test

为了工作,我尝试在回复中使用||,但它不起作用。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

不可能使返回值取决于返回值发生的情况。

但是,您可以返回包含属性String的{​​{1}}对象:

  

不要在任何生产代码中执行此操作,这非常难看,没有人期望它。

hi
  

同样,不要在任何生产代码中执行此操作,这非常难看,没有人期望它。

演示:

String.prototype.doStuffThatNobodyExpects = function(a, b) {
    var s = new String(this);
    s[a] = b;
    return s;
};

答案 1 :(得分:2)

这是一个尴尬的结构,你想要的,但是......

String.prototype.test = function(a,b){
    this[a]=b;
    return this;
}

//usage
document.write("Test".test('hi','hello'));
document.write("Test".test('hi','hello').hi);

jsFiddle:http://jsfiddle.net/XUcYy/