如何用原型链实现JS继承,改写为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1919个文字,预计阅读时间需要8分钟。
目录+原型链是什么+通过构造函数创建实例+使用原型链的方式实现继承+方法1:Object.create+方法2:直接修改+方法3:使用父类的实例+总结+今天讲一道经典的原型链面试题
目录
- 原型链是什么
- 通过构造函数创建实例对象
- 用原型链的方式实现继承
- 方法1:Object.create
- 方法2:直接修改 [[prototype]]
- 方法3:使用父类的实例
- 总结
今天讲一道经典的原型链面试题。
原型链是什么
JavaScript 中,每当创建一个对象,都会给这个对象提供一个内置对象 [[Prototype]] 。这个对象就是原型对象,[[Prototype]] 的层层嵌套就形成了原型链。
当我们访问一个对象的属性时,如果自身没有,就会通过原型链向上追溯,找到第一个存在该属性原型对象,取出对应值。
当然原型链不是无止境的,和单链表一样,最后一个原型对象的值是 null,原型链的所有对象都找不到指定的属性时,我们会拿到 undefined。
[[Prototype]] 虽然无法通过脚本进行访问,但大多数浏览器提供了 __proto__ 属性来访问这个内置对象,但它并不是标准,无法兼容所有浏览器。
本文共计1919个文字,预计阅读时间需要8分钟。
目录+原型链是什么+通过构造函数创建实例+使用原型链的方式实现继承+方法1:Object.create+方法2:直接修改+方法3:使用父类的实例+总结+今天讲一道经典的原型链面试题
目录
- 原型链是什么
- 通过构造函数创建实例对象
- 用原型链的方式实现继承
- 方法1:Object.create
- 方法2:直接修改 [[prototype]]
- 方法3:使用父类的实例
- 总结
今天讲一道经典的原型链面试题。
原型链是什么
JavaScript 中,每当创建一个对象,都会给这个对象提供一个内置对象 [[Prototype]] 。这个对象就是原型对象,[[Prototype]] 的层层嵌套就形成了原型链。
当我们访问一个对象的属性时,如果自身没有,就会通过原型链向上追溯,找到第一个存在该属性原型对象,取出对应值。
当然原型链不是无止境的,和单链表一样,最后一个原型对象的值是 null,原型链的所有对象都找不到指定的属性时,我们会拿到 undefined。
[[Prototype]] 虽然无法通过脚本进行访问,但大多数浏览器提供了 __proto__ 属性来访问这个内置对象,但它并不是标准,无法兼容所有浏览器。

