分享更有价值
被信任是一种快乐

JavaScript原型与原型链知识点有哪些

文章页正文上

本篇内容主要讲解“JavaScript原型与原型链知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript原型与原型链知识点有哪些”吧!在JavaScript中,函数是一个包含属性和方法的Function类型的对象。而原型(Prototype)就是Function类型对象的一个属性。在函数定义时就包含了prototype属性,它的初始值是一个空对免费云主机、域名象。在JavaScript中并没有定义函数的原型类型,所以原型可以是任何类型。原型是用于保存对象的共享属性和方法的,原型的属性和方法并不会影响函数本身的属性和方法。通过如下两种方式可以获取对象的原型,从而设置共享的属性和方法:通过构造函数的prototype属性通过Object对象的getPrototype(obj)方法。Object.getOwnPropertyDescriptors() 方法用来获取一个对象的所有自身属性的描述符。constructor是在创建函数的时候自动添加的,指向构造函数本身通过如下两种方式可以设置原型的属性和方法:原型的属性和方法单独进行定义。直接为原型定义一个新对象。当我们需要在原型上添加很多很多属性的时候 一遍一遍的去写 构造函数.prototype.属性名 太麻烦了,可以直接修改整个prototype每个对象中都会具有一个isPrototypeOf()方法,该方法用来判断一个对象是否是另一个对象的原型。验证了obj对象是hero对象的原型接下来我们使用一段代码来展开对原型链的认识:最终查找到address属性
那么这里有一个问题,如果一直没有查到,会无穷尽的去查找吗?接下来我们就来了解一下上面我们说到,顺着原型链不会无休止的去查找,当查到顶层原型的时候,如果还没查到就会返回undefined那么顶层原型是什么呢?
示例代码如下:字面量对象obj的原型是:{}{}就是顶层的原型
当我们继续向上打印__proto__时,返回一个null值,就证明上一层就已经是顶层原型了如下图是针对第一段代码中缺少的顶层原型做的补充:
顶层原型就是Object.prototype3.1 那么什么地方是原型链的尽头呢?比如第三个对象是否也有原型__proto__属性呢?我们发现上面打印结果为 空对象{}事实上这个原型就是我们最顶层的原型了Object是所有类的父类
所以obj.__proto__其实就是Object.prototype ,
console.log(obj.__proto__ === Object.prototype) // true我们可以看出结果Object.prototype就是顶层原型从Object直接创建出来的对象的原型都是 {}3.2 那么我们可能会问:{}原型有什么特殊的嘛?特殊点1:该对象有原型属性,但是它的原型属性已经指向的是null,也就是已经是顶层原型了;特殊点2:该对象上有甚很多默认的属性和方法;虽然打印Object.prototype的结果为空对象{},但它不是空的,只是里面的属性不可枚举而已,例如我们就打印constructor属性看看我们也可以通过Object.getOwnPropertyDescriptors()方法获取Object.prototype中的所有自身属性的描述符。到此,相信大家对“JavaScript原型与原型链知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: jquery如何用CSS()设置鼠标禁止样式

本篇内容主要讲解“jquery如何用CSS()设置鼠标禁止样式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何用CSS()设置鼠标禁止样式”吧! 方法:只需用CSS()将鼠标样式属性“cursor”的…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册