原型链: 是整个面向对象的基础
- 创建对象有几种方法:
var o1 = {name:'o1'}
var o11 = new Object({name:'o11'});
var M = function(){this.name = 'o2'};
var o2 = new M()
var P = {name:'o3'};
var o3 = Object.create(P)
- 原型、构造函数、实例、原型链:(这块的演示可以用M来进行演示一波原型、构造函数、实例之间的关系)
在控制台输入o2(实例)、M(构造函数)、M.prototype(原型对象)、M.prototype.constructor === M(判断M的原型对象的constructor是否严格等于M)、
o2.__proto__ === M.prototype()
- 构造函数: 凡是通过new操作后面的函数,这个函数就不是普通的函数,即使里面没有name,任何一个函数只要被new使用了就叫构造函数。 (构造函数是可以使用new运算符生成实例)
构造函数和原型对象的关系:
- 函数都有一个prototype属性,这是在声明一个函数的时候js自动给它添加prototype属性,prototype指的就是原型对象;
- 原型对象会以constructor(构造器)来区分是被哪个构造函数引用;
- 实例: 上面的o1、o11、o2就是实例
- 原型链: 实例通过prototype和proto往上查找相关联的对象直到object.prototype的过程为原型链。 (工作原理:通过原型链的方式找到原型对象,原型对象的方法被不同的实例所共有的为原型链的工作原理)
- instanceof的原理: 判断实例对象的proto和生成该实例的构造函数的prototype是不是引用的同一个地址
如果此文对你有用请动动你的小手点个赞!谢谢!!!
网友评论