ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-09-18

2021-09-18 22:58:06  阅读:124  来源: 互联网

标签:foo 对象 18 09 myObject 原型 2021 prototype 属性


原型

在Js中每个对象都有一个与之相关联的对象,叫原型对象。每一次获取对象属性都是查询的过程,当对象的自有属性好啊不到时就会去找它的原型对象。
在JS函数也是一个对象,每个函数都有prototype属性(只有函数有prototype属性),这个是一个指针,也是一个对象,二者对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
每个函数都有prototype属性,指向函数的原型对象。他们的实例对象可以共享这个属性,实例和原型对象关联起来所用的属性叫做_proto_(([prototype])),它也是一个指针,指向构造函数的原型对象,就是我们能够共享信息的那个对象。

prototype

对象均有一个prototype内置属性,该属性非空。默认是null。通过ES5语法Object.create()可以继承一个对象(通过原型继承),普通的prototype最终都会指向最终的Object.prototype对象

属性设置和屏蔽

给对象添加属性经过:
myObject.foo=“bar”

  • 如果myObject对象包含名为foo的普通数据访问属性,这条赋值语句只会修改已有的属性
  • 如果foo不直接存在于myObject中,prototype链会被遍历,找不到foo,foo会直接添加到myObject
  • 如果foo出现在myObject在原型链上层,那么新添加的foo属性会屏蔽掉上层所有的foo属性;如果在prototype链上层存在foo并且它是一个setter,那么foo不会添加到myObject中。
  • 注意myObject++等操作,++相当于myObject=myObject+1,进行了一次复制操作,所以会缠上隐式屏蔽

“类”函数

  • JavaScript才是真正的面向对象语言,不通过类,直接创建对象的语言。JavaScript是通过函数在模仿类的特性,因为函数会拥有一种prototype的公有且不可枚举的属性,它会指向这个函数的原型,通过.prototype来访问。
  • 通过new创建的对象最终会被[[prototype]]链接到原函数.prototype上
  • 类可以被复制(实例化多次),一个类就意味着把类的行为复制到物理对象中,对于每一个实例都会重复这个过程。但是在JavaScript并没有类似的复制机制。通过prototype关联同一个对象,默认情况不会复制,而是互相关联。new其实就是生成一个新对象,这个对象的内部链接[[prototype]]关联着原函数的prototype对象。最后我们得到了两个对象,它们只是相互关联。这就叫作原型继承。
  • Js的原型继承会在两个对象之间创建关联,这样一个对象可以通过委托另一个对象的属性和函数。

标签:foo,对象,18,09,myObject,原型,2021,prototype,属性
来源: https://blog.csdn.net/weixin_50635509/article/details/120375007

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有