昨天我发现了这个功能:
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上也测试了它并且它可以工作,所以这必须是旧的语法并且没有关于它的信息? :(奇怪......
你们俩都给出了很好的解决方案,感谢这里的解决方案!
答案 0 :(得分:7)
简单地使用逗号运算符(,) 评估它的两个操作数和 返回第二个值 操作数。
在这种情况下,它确实像调用此函数一样工作:
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;
产生语法错误!