原型
-
概念:在JavaScript中,原型(Prototype)是一个对象,它包含了一组属性和方法,这些属性和方法可以被该对象的实例完全继承,每个JavaScript对象都有一个内部属性(通常称为内部链接或内部指针),指向它的原型对象。当访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript引擎会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的末端。
-
注意:只有函数存在原型属性,如果把方法挂载到实例身上,每次实例化都会开辟新的内存空间,如果使用原型的方式,再把方法挂在到原生身上,则每次实例化不会开辟新的内存空间,并且将方法挂载到实例的本身上打印出来的结果为false,但是如果挂载到原型上就会返回true效果实例共享,所以推荐构造函数中生命属性
原型链
-
概念:原型链是JavaScript中实现继承的主要机制之一。在JavaScript中,每个对象都有一个特殊的隐藏属性,即原型(prototype),它指向另一个对象。当试图访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript引擎就会沿着原型链向上查找,直到找到该属性或方法,或者到达原型链的末端
-
注意:Function是特殊的对象他的prototype和.proto都指向Function.prototype,而Function.prototype的constructor指向本身,并且所有的函数都是Function的实例,例如,Object内置对象的.proto也指向Function.prototype,Object内置对象的prototype指向的是Object.prototype,当Object内置对象new了一个实例,而Object这个实例的.proto指向的是Object.prototype原型对象,而Object.protype的constructor指向的是Object内置对象,如果Object的原型在向上找则会找到最上层,所以Object.prototype.proto则会找到null,就这样向上找的过程,直到找到原型链的末端null的过程像链状 ,所以称之为原型链
-
-