JS 原型与原型链

JS 原型与原型链_第1张图片
图片发自App

prototype

js中对象分为普通对象和函数对象其中函数对象中包括function和object,每一个函数对象都有一个prototype属性,prototype为原型对象,原型对象(objectF.prototype)其实就是普通对象。在我看来protoype的直白意思就是:原函数的附加功能,其还保留着原函数的功能,例如下:

  var person = function(name){ 
    this.name = name 
 }; 
 person.prototype.getName = function(){  
      return this.name;   
}  
var NAME = new person(‘CARRY’);
  NAME.getName(); //CARRY

(proto )

JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做proto的内置属性,用于指向创建它的函数对象的原型对象prototype。以上面的例子为例:

console.log(zjh.__proto__ === person.prototype) //true同样
person.prototype对象也有__proto__属性
它指向创建它的函数对象(Object)的prototype  console.log(person.prototype.__proto__ === Object.prototype) //true继续,Object.prototype对象也有__proto__属性
但它比较特殊为null  console.log(Object.prototype.__proto__) //null
我们把这个有__proto__串起来的直到Object.prototype.__proto__为null的链叫做原型链。

summing

已知A为函数对象,A通过原型对象来创建函数对象功能(属性)b,A.prototype.b=function(){},初始化一个var C= new A();C通过proto(原型链)可以继承属性方法b


图片发自App

文章资料



希望有更多小胖友提出宝贵意见,若有关于前端的问题,或者关于大学方面的感想可以私聊我(~):
github
知乎

个人博客
微博

你可能感兴趣的:(JS 原型与原型链)