深入理解js原型与原型链


1.构造函数

构造函数用来实例化对象时对对象进行初始化。每个构造函数都具有一个不可枚举的prototype属性,也叫做原型。而原型具有一个constructor属性指向构造函数。
不论是构造函数还是原型,都是对象。
var a=new A();
A为构造函数,a为实例,A.prototype为原型对象,A.prototype.constructor为原型对象的一个属性等于A
A.prototype.constructor===A


2.对象

对象分为普通对象和函数(function)
function F(); //可以理解为new F()
F.protype.constructor===F;


3.原型链

3.1new实例的原型链

每个用new创建的实例都具有一个__proto__属性,指向构造函数的prototype
Function Fun(){}
var fun = new Fun();
fun.__proto__ ==== Fun.prototype //两者相等
上面说到原型也是一个对象,那原型是谁的对象呢,答案是Object
所以:Function.prototype.__proto__===Object.prototype
而Object不是任何人的实例所以:Object.__protot__=null


3.2函数对象的原型链

function Fun(){}
所有函数对象都是函数Funtion的实例,包括自己,因为自己也是个函数
Fun.__proto__===Function.prototype
Array.__proto__===Function.prototype
String.__proto__===Function.prototype
Function.__proto__===Function.prototype
而原型对象为Object的实例
=>Function.prototype.__proto__===Object.prototype


4.instanceof运算符

a instanceof b //如果能在原型链中遍历到,则返回true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值