这是一个演示我的问题的插件:http://plnkr.co/edit/322WB4jyCJberABbb0P0
我正在为一个不同的问题做一些测试,我遇到了一些意想不到的行为。
var A = function() {}
A.prototype = {
constructor: A,
x: 10
};
var a = new A();
document.writeln("a.x is " + a.x + "<br>");
document.writeln("a.constructor === A is " + a.constructor === A + "<br>");
var result = a.constructor === A;
document.writeln("a.constructor === A is " + result + "<br>");
第二个writeln不会将字符串与值连接,而是写入“false”。第三个writeln按预期连接和写入。
这不是我在测试之外做的事情,但我想理解为什么第二个writeln会这样做。
答案 0 :(得分:3)
那是因为===
的优先级低于+
- 否则您将无法编写像a + b === c + d
这样的简单方程式!
所以只需在(a.constructor === A)
周围使用括号,一切都会好的。