- 开幕雷击(核心理解):
在js中,函数也是一种对象实例,即函数拥有函数与实例双重性质
注:这句话的核心要义贯穿接下来的所有总结
- 对象实例产生的过程
- 在C++中,每一个对象实例,是由事先声明好的一个类中的构造函数进行构造的,即某一类中的构造函数创造了某一个实例
- 在js中,差不多,也是某一个函数创造了某一个实例,只不过,这个函数不用出现在类中,即根本不用事先声明一个类,类中的属性可以动态添加的
- 动态添加属性深入理解
- 首先明确,方法也是属性的一种,那么动态添加属性自然也可以动态添加方法啦!
- 静态属性添加的实例中,动态属性(方法)添加到这个实例的原型中
- 原型
var fn= new Fun();
复制代码
这是一个创造函数对象的语句,实例的__proto__与构造方法的prototype两个值是相等的,都指向一个Object空对象。开始套娃,Object空对象?哦!那么一定是被某一个构造函数所构造出来的!并且一定也有一个__proto__又指向一个Object空对象啦,不过这个爷爷不叫Object空对象,它是Object原型对象,两个不一样,即
var object = new Object();
console.log(object.__proto__ instanceof Object); //false
复制代码
- 函数的“__ proto__”属性
如本文第开头,,即函数拥有函数与实例双重性质
-
一切函数对象实例都是由Function()构造函数构造的,即使Function()本身也不例外
-
Object原型对象不是Object的实例
var object = new Object();
console.log(object.__proto__ instanceof Object); //false
复制代码
var object = new Object();
console.log(Object.prototype instanceof Object); //false
复制代码
- 通过原型链深入理解instanceof
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END