首页 > 其他 > 详细

函数调用情景之构造函数调用

时间:2020-07-09 16:08:54      阅读:62      评论:0      收藏:0      [点我收藏+]

如果函数或者方法调用之前带有关键字new,它就构成构造函数调用。构造函数调用和普通的函数调用以及方法调用在实参处理、调用上下文和返回值方面都有不同。


如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内,这和函数调用和方法调用是一致的。但如果构造函数没有形参,JavaScript构造函数调用的语法是允许省略实参列表和圆括号的。凡是没有形参的构造函数调用都可以省
略圆括号,比如,下面这两行代码就是等价的:

var o = new Object();
var o = new Object;

 

详细过程:
构造函数调用创建一个新的空对象, 这个对象继承自构造函数的prototype属性。构造函数试图初始化这个新创建的对象,并将这个对象用做其调用上下文(this),因此构造函数可以使用this关键字来引用这个新创建的对象。注意,尽管构造函数看起来像-个方法调用,它依然会使用这个新对象作为调用上下文。也就是说,在表达式new o.m()中, 调用上下文并不是o。

注意点:
构造函数通常不使用return关键字,它们通常初始化新对象,当构造函数的函数体执行完毕时,它会显式返回。在这种情况下,构造函数调用表达式的计算结果就是这个新对象的值。然而如果构造函数显式地使用ret ur n语句返回一个对象,那么调用表达式的值就是这个对象。如果构造函数使用return语句但没有指定返回值,或者返回一个原始值,那么这时将忽略返回值,同时使用这个新对象作为调用结果。

函数调用情景之构造函数调用

原文:https://www.cnblogs.com/LeoXnote/p/13274008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!