js 原型链

js 对每个创建的对象都会设置一个原型

当我们用obj.xxx去访问一个对象的属性时,js引擎先在当前对象上查找属性,如果没找到会到其对应的原型对象上查找,如果还没找到就会到Object.prototype对象上找,最后如果还没找到就返回undefined

例如:创建一个数组对象

var arry= [1,2,3]

它的原型链就是

arry -> Array.prototype -> Object.prototype -> null

我们每次使用的数组方法 indexOf()和shift(),push()等方法都是在 Array.prototype 上定义的,所以你可以直接在你数组对象上直接调用它,

例如:创建一个函数:

function onefun() {
    return 1
}

会原生js 的人都知道函数也是一个对象,他的原型链就是:

oneFun -> Function.prototype ->Object.prototype -> null 

我们每次在调用的改变函数指向的方法 apply()和  call() 等方法就是定义在 Function.prototype 上

总结:如果原型链很长,那么访问一个对象的属性就会因为需要花费更多的时间查找而变得更慢,所以要注意不要把原型链搞得很长

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值