资讯专栏INFORMATION COLUMN

关于javascript原型链上属性查找的小讨论

klivitamJ / 3196人阅读

摘要:今天和前端组的小伙伴们讨论了下的原型链,得出了一个看似很简单的结论。对于一个对象上属性的查找是递归的。给出一段代码,相信会很容易理解原型链上的对象查找。从这个结果中可以很轻松看出原型链查找属性的顺序。

今天和前端组的小伙伴们讨论了下js的原型链,得出了一个看似很简单的结论。

  

对于一个对象上属性的查找是递归的。

查找属性会从自身属性(OwnProperty)找起,如果不存在,就查看prototype中的存在不存在。

prototype是一个对象

可以从以上的三点中,看出一个递归关系。给出一段代码,相信会很容易理解原型链上的对象查找。

var A = function () {
    this.i = 2;
}
A.prototype.i = 3;

var B = function() {
    this.i = 4;
}

B.prototype = new A();

var b = new B();

console.log(b.i); //4;
delete b.i;
console.log(b.i); // 2;
delete B.prototype.i;
console.log(b.i); //3

从这个结果中可以很轻松看出原型链查找属性的顺序。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85300.html

相关文章

  • 【js细节剖析】通过"="操作符为对象添加新属性时,结果会受到原型链上的同名属性

    摘要:在使用的过程中,通过操作符为对象添加新属性是很常见的操作。但是,这个操作的结果实际上会受到原型链上的同名属性影响。通过它,可以做到操作符做不到的事情,比如为对象设置一个新属性,即使它的原型链上已经有一个的同名属性。 在使用JavaScript的过程中,通过=操作符为对象添加新属性是很常见的操作:obj.newProp = value;。但是,这个操作的结果实际上会受到原型链上的同名属性...

    wemallshop 评论0 收藏0
  • 和少妇白洁一起学JavaScript

    摘要:我们已经回答了的构造函数和原型都是谁的问题,现在牵扯出来一个,我们继续检查的构造函数是全局对象上属性叫的对象的原型是个匿名函数,按照关于构造函数的约定,它应该是构造函数的属性我们给这个对象起个名字,叫。 我不确定JavaScript语言是否应该被称为Object-Oriented,因为Object Oriented是一组语言特性、编程模式、和设计与工程方法的笼统称谓,没有一个详尽和大家...

    DevTTL 评论0 收藏0
  • 细说 Javascript 对象篇(二) : 原型对象

    摘要:并没有类继承模型,而是使用原型对象进行原型式继承。我们举例说明原型链查找机制当访问一个对象的属性时,会从对象本身开始往上遍历整个原型链,直到找到对应属性为止。原始类型有以下五种型。此外,试图查找一个不存在属性时将会遍历整个原型链。 Javascript 并没有类继承模型,而是使用原型对象 prototype 进行原型式继承。 尽管人们经常将此看做是 Javascript 的一个缺点,然...

    lansheng228 评论0 收藏0
  • new 操作符到底做了什么?

    摘要:原文相信很多才接触前端的小伙伴甚至工作几年的前端小伙伴对这个操作符的了解还停留在一知半解的地步,比较模糊。 原文:http://blog.xieyangogo.cn/201... 相信很多才接触前端的小伙伴甚至工作几年的前端小伙伴对new这个操作符的了解还停留在一知半解的地步,比较模糊。就比如前不久接触到一个入职两年的前端小伙伴,他告诉我new是用来创建对象的,无可厚非,可能很多人都...

    _ivan 评论0 收藏0
  • JavaScript面向对象编程简明教程

    摘要:这样每个实例独享自己的属性,并和其他同类型的实例共享方法构造函数原型以上这种方式定义的类型,可以通过来判断一个实例是否是类型的实际上是通过实例的原型链来判断一个对象是否某个类型的实例的,具体的细节后面会详细介绍。 JavaScript面向对象编程 如何定义自定义类型 首先需要明确,JavaScript并不是传统意义上的OO语言,它并没有class的概念, 而是包含了另一套异常强大的...

    myeveryheart 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<