美文网首页
JS对象中原型链的理解

JS对象中原型链的理解

作者: 小陈wx | 来源:发表于2022-05-18 14:48 被阅读0次

什么是原型?

英文prototype翻译过来就是原型,原型从字面意思上可以理解为事物原本的样子,举一个不太恰当的例子:猴子是人类的原型?o( ̄︶ ̄)o,可见而知事务由原型演变而来,拥有原型的一些特征和功能,比如都有鼻子眼睛,都是灵长类等,演变而来的事物往往还拥有更多功能,比如人类会使用计算机!猴子不会!

那何为JS中的原型?引用数据类型中都存在一个名为__proto__(隐式原型)的值,这个值指向的是其构造函数的prototype(显式原型)属性。prototype值的存在,是为了解决类的问题,一类事物拥有共同的特征和功能,这些特征和功能被存储在原型之中,而prototype就是存放某类对象共有属性与方法的内存空间。

以内存的角度来看原型:
1、构造函数的prototype属性是一个引用数据类型,它被储存在堆空间之中;
2、这个构造函数实例化的对象中包含一个__proto__属性指向的是其构造函数prototype堆空间地址;
3、这样的指向关系避免重复创建共有属性,减少不必要内存占用;
4、任何对象要使用其共有原型方法和属性,可以到依据其__proto__的指向最终找到prototype的堆空间占用;

什么是原型链?

理解了原型。理解原型链就很简单了,原型链就是查找原型的规则,向上逐级查找的方式就像链条一样,故称为原型链,对象查找其共有方法和属性先到其构造函数的原型中找,找不到则到其原型的原型上找,一直找到最终的构造函数Object上为止,此时还找不到说明没有你所查找的原型方法或属性,列个不恰当的原型链条,生物>灵长类>人类>女人>非洲女人,非洲女人想说汉语,由于她本身不会,潜意识就会去看看作为女人本能中有没有说汉语这个功能,如果没有则去看看人类本能中会不会说汉语,再没有则去灵长类本能中查看,一直查看到生物这一层,最终还是没有查询到这个功能,最终返回这个非洲女人不会说汉语。

注意下面代码段,可见function也是一个对象,是构造函数Function创造出的实例,他同时拥有prototype和__proto__属性,意味着在function对象的显示原型里找不到需要的属性,则会到其隐式原型中继续查找;

<scritp>
    var add = new Function("num", "alert(num)");
</script>

相关文章

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

  • 在nodejs中面向对象:Bearcat

    JS中的面向对象 最最最开始,我们先来说说JS中的面向对象。 原型链 参考文章:图解Javascript原型链 J...

  • js原型链--js面向对象编程

    简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢...

  • 原型和原型链的简单理解

    原型 在JS中原型就是prototype对象,用来表示类型之间的关系。 原型链 JS中对象和对象之间是有联系的,通...

  • JS原型理解

    原型链是整个JS面向对象的基础在理解原型链之前先来谈谈JS创建对象的几种方式 可以看到输出了4个对象,a1和a2看...

  • JavaScript原型链—prototype chain

    原型链是JS里一个重要的概念,理解原型链之前,我们要了解原型。 原型 mdn:每个对象都有一个内部链接到另一个对象...

  • 理解js中是原型链? 如何实现继承?

    怎么理解js中是原型链? 如何实现继承? 1.每个构造函数都有一个原型对象 2.每个原型对象都包含一个指向构造函数...

  • JS博客

    JS构造函数及new运算符 JS原型对象和原型链 函数作用域和作用域链 干货分享:让你分分钟学会JS闭包 深入理解...

  • 原型对象和原型链二者的关系

    开篇 之前对js中的原型链和原型对象有所了解,每当别人问我什么是原型链和原型对象时,我总是用很官方(其实自己不懂)...

网友评论

      本文标题:JS对象中原型链的理解

      本文链接:https://www.haomeiwen.com/subject/wkfsurtx.html