Javascript 使用“new”调用函数时将值绑定到“this”
在阅读了关于提升以及如何绑定之后,我不理解这段代码的行为。假设你有这个功能:Javascript 使用“new”调用函数时将值绑定到“this”,javascript,binding,this,Javascript,Binding,This,在阅读了关于提升以及如何绑定之后,我不理解这段代码的行为。假设你有这个功能: function foo() { this.baz = "baz"; console.log(this.baz); } var baz = new foo(); 现在我希望控制台能够记录baz,因为: 此绑定是正在创建的新对象。 正在为其分配一个值为baz的baz属性。 值分配发生在控制台日志之前。 相反,控制台的日志记录未定义 我遗漏了什么?相反,控制台记录未定义,正是因为你列出的原因。第1点到第
function foo() {
this.baz = "baz";
console.log(this.baz);
}
var baz = new foo();
现在我希望控制台能够记录baz,因为:
此绑定是正在创建的新对象。
正在为其分配一个值为baz的baz属性。
值分配发生在控制台日志之前。
相反,控制台的日志记录未定义
我遗漏了什么?相反,控制台记录未定义,正是因为你列出的原因。第1点到第3点都是正确的。我认为他很困惑,因为它也记录了未定义的日志,但它这样做是因为var baz=new foo语句就是这样做的。例如,如果在控制台中键入var a=5,则Chrome日志未定义。提升也不会以任何有意义的方式出现在上面的代码中。@JamesBrierley:是的,如果将其粘贴到控制台中,则完全正确。这确实可能是一种困惑。对于图片,这可能是一个很好的答案。我不认为这太投机。你们是对的。这是我在控制台中看到的行为,但当我通过IDE运行它时,日志记录确实正确发生。谢谢你们两位。