“a = object,object”的Javascript语法

时间:2009-01-24 16:10:18

标签: javascript syntax

昨天我发现了这个功能:

function clone(obj) {
    return typeof obj === 'undefined' ?
        this : (clone.prototype = Object(obj), new clone);
}

虽然我在Javascript中看到了很多,但这种语法对我来说是未知的:

 clone.prototype = Object(obj), new clone

有人能解释我怎么读这个?你能给我链接到正确的定义吗?我在Mozilla的MDC中找不到它,也不知道如何在网上找到它,但这是我第一次看到这种语法。感谢您的努力。

最终解决方案:

我根据这里的答案做了一些测试,我找到了:

var b;
b=alert('test'),6;
alert(b);  // alert undefined
b=5,alert('test2');
alert(b);  // alert 5

感谢christoph的研究我们发现了更多:

var a, b, c;
a = 1, 2;   // a is 1
(b = 1), 2; // b is 1 - same as above!
c = (1, 2); // c is 2

啊,我在IE6上也测试了它并且它可以工作,所以这必须是旧的语法并且没有关于它的信息? :(奇怪......

你们俩都给出了很好的解决方案,感谢这里的解决方案!

2 个答案:

答案 0 :(得分:7)

Comma operator at MDC

  

简单地使用逗号运算符(,)   评估它的两个操作数和   返回第二个值   操作数。

在这种情况下,它确实像调用此函数一样工作:

function() {
   clone.prototype = Object(obj);
   return new clone;
}

答案 1 :(得分:3)

由于运营商优先权,您的“最终解决方案”会产生意外结果。以下示例可能有助于澄清问题:

var a, b, c;
a = 1, 2;   // a is 1
(b = 1), 2; // b is 1 - same as above!
c = (1, 2); // c is 2

另请注意

var a = 1, 2;

产生语法错误!