Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“new”调用函数时将值绑定到“this”_Javascript_Binding_This - Fatal编程技术网

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运行它时,日志记录确实正确发生。谢谢你们两位。