Javascript中调用一个函数,使用new或者直接调用有什么区别

Javascript中调用一个函数,使用new或者直接调用有什么区别,第1张

new 出来会改变this的指向,是对象的一个实例直接调用的时候它叫“普通函数”,此时用全局对象window做上下文。

用new *** 作符调用的时候它叫“构造函数”,此时用这个新生的对象做上下文。

用某个对象拽着它调用的时候,它叫做“方法”,此时用拽它的那个对象做上下文。

它创建一个新对象。这个对象的类型就是 object 。

它将这个新对象的内部不可访问的 [[prototype]] (即 proto )属性设置为构造函数的外部可访问 原型 对象(每个函数对象都会自动具有 prototype 属性)。

它使this变量指向新创建的对象。

每当this提及时,它都会使用新创建的对象执行构造函数。

除非构造函数返回非null对象引用,否则它将返回新创建的对象。在这种情况下,将返回该对象引用。

注意: 构造函数 是指new关键字后面的函数,如

new ConstructorFunction(arg1, arg2)

完成此 *** 作后,如果请求新对象的未定义属性,则脚本将改为检查对象的 [[prototype]]

对象的属性。这就是您可以获得类似于JavaScript中传统类继承的方式的方法。

关于这一点,最困难的部分是点号2。每个对象(包括函数)都具有称为 [[prototype]]的 内部属性。它可以 只

被在创建对象的时间与设置,无论是 新的 ,具有 的Objectcreate

,或者基于文本(函数默认Functionprototype的,数字到Numberprototype等)。只能使用

ObjectgetPrototypeOf(someObject) 读取它。有 没有 其他的方式来设置或读取此值。

除了隐藏的 [[prototype]] 属性外,函数还具有一个称为 prototype

的属性,您可以访问和修改此属性,以为您创建的对象提供继承的属性和方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12184460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存