位置:首页 > web前端 > javascript

js中原型_原型链的理解_二者指的是什么意思

dearweb 发布:2021-10-23 14:26:23阅读:

如果你接触过js那么你一定听过原型以及原型链吧?也许你和大部分程序员一样只是听过用过但是对其概念却不是很清楚,本文主要是给大家介绍一下原型原型链的基础概念,对二者有更深入的了解。

原型的概念

原型:一个可以被复制(或者叫克隆)的一个类,通过复制原型可以创建一个一模一样的新对象,也可以说原型就是一个模板,在设计语言中更准确的说是一个对象模板

1)原型是定义了一些公用的属性和方法,利用原型创建出来的新对象实例会共享原型的所有属性和方法

2)严格模式下,原型的属性和方法还是会被原型实例所共享的

3)通过原型创建的新对象实例是相互独立的,为新对象实例添加的方法只有该实例拥有这个方法,其它实例是没有这个方法的

4)原型的总结:

所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象

所有函数都有一个prototype(原型)属性,属性值是一个普通的对象

所有引用类型的__proto__属性指向它构造函数的prototype

原型链的概念

原型链:原型链是原型对象创建过程的历史记录,当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构

1)原型设计的问题:当查找一个对象的属性时,JavaScript 会根据原型链向上遍历对象的原型,直到找到给定名称的属性为止,直到到达原型链的顶部仍然没有找到指定的属性,就会返回 undefined

也可以理解为原型链继承时查找属性的过程是先查找自身属性,当自身属性不存在时,会在原型链中逐级查找

2)hasOwnProperty 函数:可以用来检查对象自身是否含有某个属性,返回值是布尔值,当属性不存在时不会向上查找对象原型链,hasOwnProperty是 JavaScript 中唯一一个处理属性但是不查找原型链的函数

3)getOwnPropertyNames 函数:可以获取对象所有的自身属性,返回值是由对象自身属性名称组成的数组,同样不会向上查找对象原型链

4)原型链的小结:

一直往上层查找,直到到null还没有找到,则返回undefined

Object.prototype.__proto__ === null

所有从原型或更高级原型中的得到、执行的方法,其中的this在执行时,指向当前这个触发事件执行的对象

上面为大家介绍了原型、原型链的基础概念,现在你该明白了其中的奥妙吧?

24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看