本篇内容主要讲解“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.prototype
3.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原型与原型链知识点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本文小编为大家详细介绍“Lottie动画前端开发使用技巧实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Lottie动画前端开发使用技巧实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在前端程序员根据UI视觉稿实现页面…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。