执行此操作可生成正确的结果,Chrome调试器表示没有例外:
var x = new Foo().bar().baz();
Run Code Online (Sandbox Code Playgroud)
但这会进入太空而永远不会完成,Chrome调试器虽然bar()执行正确,但它会抛出"typeerror"异常,并且在尝试调用baz()时永远不会到达指定的函数:
var x = new Foo();
x = x.bar().baz();
Run Code Online (Sandbox Code Playgroud)
在我看来,它们在功能上是相同的.他们为什么表现不同?
似乎与Chrome调试器有关:
function Foo(){}
Foo.prototype.bar = function() {
return this;
}
Foo.prototype.baz = function() {
return 'baz';
}
var x = new Foo().bar().baz();
console.log(x); // baz
Run Code Online (Sandbox Code Playgroud)
正如预期的那样(Firefox,IE,Chrome).
并且:
var x = new Foo();
x = x.bar().baz()
console.log(x); // baz
Run Code Online (Sandbox Code Playgroud)
这两组代码在功能上是相同的.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |