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 上

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

你可能感兴趣的:(js)