比如一个构造函数Test
function Test(){
// 代码}
var test1=new Test();
在 JavaScript
中,使用 new
关键字后,意味着做了如下四件事情:
-
创建一个新的对象,这个对象的类型是
object
; -
设置这个新的对象的内部、可访问性和
[[prototype]]
属性为构造函数(指prototype.construtor
所指向的构造函数)中设置的; -
执行构造函数,当
this
关键字被提及的时候,使用新创建的对象的属性; 返回新创建的对象(除非构造方法中返回的是‘无原型’)。 -
在创建新对象成功之后,如果调用一个新对象没有的属性的时候,
JavaScript
会延原型链向止逐层查找对应的内容。这类似于传统的‘类继承’。注意:在第二点中所说的有关
[[prototype]]
属性,只有在一个对象被创建的时候起作用,比如使用new
关键字、使用Object.create
、基于字面意义的(函数默认为Function.prototype
,数字默认为Number.prototype
等)。它只能被Object.getPrototypeOf(someObject)
所读取。没有其他任何方式来设置或读取这个值。