【javaScript】对于js中原型链的理解,以及通过原型链深入理解instanceof

  • 开幕雷击(核心理解):

在js中,函数也是一种对象实例,即函数拥有函数与实例双重性质

注:这句话的核心要义贯穿接下来的所有总结

  • 对象实例产生的过程
  1. 在C++中,每一个对象实例,是由事先声明好的一个类中的构造函数进行构造的,即某一类中的构造函数创造了某一个实例
  2. 在js中,差不多,也是某一个函数创造了某一个实例,只不过,这个函数不用出现在类中,即根本不用事先声明一个类,类中的属性可以动态添加的
  • 动态添加属性深入理解
  1. 首先明确,方法也是属性的一种,那么动态添加属性自然也可以动态添加方法啦!
  2. 静态属性添加的实例中,动态属性(方法)添加到这个实例的原型
  • 原型

`NM9%94P(T{ERB(4WQU0ACP.png

var fn= new Fun();
复制代码

这是一个创造函数对象的语句,实例的__proto__与构造方法的prototype两个值是相等的,都指向一个Object空对象开始套娃,Object空对象?哦!那么一定是被某一个构造函数所构造出来的!并且一定也有一个__proto__又指向一个Object空对象啦,不过这个爷爷不叫Object空对象,它是Object原型对象,两个不一样,即

var object = new Object();
console.log(object.__proto__ instanceof Object); //false
复制代码
  • 函数的“__ proto__”属性

如本文第开头,,即函数拥有函数与实例双重性质

  1. 一切函数对象实例都是由Function()构造函数构造的,即使Function()本身也不例外

  2. Object原型对象不是Object的实例

var object = new Object();
console.log(object.__proto__ instanceof Object); //false
复制代码
var object = new Object();
console.log(Object.prototype instanceof Object); //false
复制代码

D73E0296BFEC911ED0A0A9EEDDFB78ED.png

  • 通过原型链深入理解instanceof

ppp.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享