本文内容:
- 原型与原型链的基本概念
- new
1. 原型与原型链的基本概念
每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节,它解释了为何一个对象会拥有定义在其他对象中的属性和方法。
准确地说,这些属性和方法定义在对象的构造器函数之上的prototype属性上,而非对象实例本身。其属性值是一个对象,其中包含了该构造函数的所有实例共享的属性和方法。
2. new
new constructor[([arguments])]
参数:
constructor:一个指定对象实例的类型的类或函数。
arguments:一个用于被 constructor 调用的参数列表。
new 关键字会进行如下的操作:
- 创建一个空的简单JavaScript对象(即{});
- 为步骤1新创建的对象添加属性__proto__,将该属性链接至构造函数的原型对象 ;
- 将步骤1新创建的对象作为this的上下文 ;
- 如果该函数没有返回对象,则返回this。
参考文章:https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/Object_prototypes