javascript - 作为类的函数中的 return 语句

标签 javascript

我对充当类的函数中的 return 语句感到困惑。请参阅下面的示例代码:

<html>
<body>

<script type="text/javascript">
function test() {
    this.abc = 'def';
    return 3;
}

var mytest = new test(); 

document.write(mytest + ', ' + (typeof mytest) + ', ' + mytest.abc);

</script>

</body>
</html>

输出的代码:[object Object], object, def.

这是我的问题。我在 test() 函数中写了“return 3”。调用 'new test()' 时是否忽略此语句?

谢谢。

最佳答案

当您使用 new 调用函数时,您将其作为构造函数调用,它会自动返回它构造的新对象。

您的 return 3; 语句被忽略。返回的是有效的:

{ abc:'def' }

...带有对 prototype 对象的隐式引用,在您的示例中它没有任何可枚举的属性,因为您没有给它任何属性。

如果你这样做了:

mytest instanceof test;

...它将评估为 true

如果你这样做了:

function test() {
    this.abc = 'def';
}
test.prototype.ghi = 'jkl';

var mytest = new test(); 

...然后你可以这样做:

mytest.ghi;

...这将为您提供值 'jkl'

关于javascript - 作为类的函数中的 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770070/

相关文章:

javascript - jQuery:在 Tab 键上触发事件

javascript - 如何在 puppeteer 和 headless Chrome 中使用代理?

javascript - 查找 dropdownlist 值更改时的行索引

javascript - 1/x 的逆关系?

javascript - 使用 Turbolinks 使哈希链接在 Chrome 中工作

javascript - 通过自定义数据/属性选择第二个元素

javascript - 使用 angularJS 在前面转换货币

javascript - 在 SuiteScript 中提取 JSON 数据时出现问题 - NetSuite

javascript - 生成器和迭代器 - 可迭代 [MDN 文档]

javascript - 将中间件添加到一行/函数中的所有 firebase 函数