【JS原型链】原型链逐步攻破

概述:创建对象有几种方法   原型、构造函数、实例、原型链     instanceof 的原理     new 运算符

创建对象有几种方法:

var o1 = { name: 'o1' }//对象字面量
var o11 = new Object({ name: 'o11' })

var M = function () { this.name = 'o2' }//显示构建函数创建对象
var o2 = new M()

var P = { name: 'o3' }//使用现有的对象来提供新创建的对象的__proto__
var o3 = Object.create(P)

原型、构造函数、实例、原型链

构造函数和原型对象的关系:可以通过 new 运算符生成一个实例,任何函数都可以成为构造函数,声明一个函数时,自带 prototype 属性,该属性初始化一个空对象(原型对象)。

实例和原型对象的关系:实例的__proto__ 引用构造函数的prototype对象

原型链:从实例对象向上找与构建该实例相关联的对象,关联对象亦有创建它的对象,逐级向上找,直到Object.prototype 至此链到达顶端。

注意:1、只有函数有prototype,对象没有    2、只有实例对象有 __proto__

instanceof 原理:判断实例对象的 __proto__ 属性和构造函数的 prototype 是否是同一个地址引用

new 运算符:new 运算符后跟的是一个构造函数

new运算符原理/步骤:

1、一个新的对象被创建。它继承自构造函数的原型对象 prototype

2、构造函数被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。当没有任何参数的情况下,new foo 等同于 new foo()

3、如果构造函数返回了一个“对象”,那么这个对象会取代整个 new 出来的结果。如果构造函数没有返回对象,那么 new出来的结果为步骤1创建的对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值