首页 > 编程知识 正文

js原型和原型链图解(js原型链阮一峰)

时间:2023-05-03 21:58:53 阅读:82119 作者:3376

原型链是js中的基本概念。 让我们来看看原型的基本用法。

首先定义三个对象,然后确定是否可以从a对象访问x、y和z。 代码如下所示。

let a={

x:'x '

}

let b={

y:'y足球俱乐部

}

拉特C={2}

z:'z '

}

console.log(x'ina ) )。

控制台日志(y ' ina ) ) )。

控制台日志(' z ' ina ) ) )。

输出结果为真、假、假。

因为x是a的属性,所以返回true。 由于x、z不是a的属性,所以返回假

接下来修改了代码。 代码如下所示。

let a={

x:'x '

}

let b={

y:'y足球俱乐部

}

拉特C={2}

z:'z '

}

object.setprototypeof(a,b ) )。

object.setprototypeof(b,c ) )。

console.log(x'ina ) )。

控制台日志(y ' ina ) ) )。

控制台日志(' z ' ina ) ) )。

输出结果为真、真、真。

在上面的代码中,使用js内置的方法Object.setPrototypeOf将a对象的原型对象设置为b对象,并以相同的方式将b对象的原型设置为c对象。

然后,在判断a上的x属性时,首先调查a对象自身是否存在x属性,因为存在x属性,所以停止检索,返回true。

然后,在判断a上的y属性时,首先调查a对象自身是否存在y属性,因为不存在,所以继续搜索作为a对象原型的b对象是否存在y属性。 由于存在y属性,停止搜索并返回true。

然后,在判断a上的z属性时,首先搜索a对象自身是否存在z属性,因为不存在,所以继续搜索a对象的原型b对象是否存在y属性。 由于不存在y属性,它将继续检查作为b对象原型的c对象是否存在z属性。 由于存在z属性,停止搜索并返回true。

可以看出,a对象的原型b实际上也是对象,b对象的原型c也是对象,在js运行环境中,对象的原型属性是内置属性,不能直接访问。 此外,搜索对象属性的过程总是先搜索对象本身,然后搜索对象的原型,最后再搜索原型。 这样就形成了原型链

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。