这篇“JavaScript中的对象字面量有什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“JavaScript中的对象字面量有什么”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。
JavaScript可以做什么
1。可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。 2 .可以处理表单,检验用户的输入,并提供及时反馈节省用户时间。 3 .可以根据用户的操作,动态的创建页面。 4使用JavaScript可以通过设置饼干存储在浏览器上的一些临时信息。
在ECMAScript 2015之前,JavaScript中的对象字面量(又叫做对象初始化器)是相当简单的,它可以定义2种属性:
- <李>
成对的静态属性名和值<代码> {name1: value1} 代码>
李> <李>通过getter <代码>{得到名称(){. .}}> 代码和setter <代码>{集名称(val) {…}}代码>定义的动态计算属性值
李>说来遗憾,一个简单的例子就可以表示对象字面量的所有可能性:
var myObject =, { myString才能:& # 39;value 1 & # 39; get 才能;输入myNumber (), { ,,,return this._myNumber; ,,}, set 才能输入myNumber(值),{ ,,,this._myNumber =,数量(价值); ,,}, }; myObject.myString;,//,=祝辞,& # 39;value 1 & # 39; 时间=myObject.myNumber & # 39; 15 & # 39;; myObject.myNumber;,//,=祝辞,15
JS是一种基于原型的语言,因此一切都是对象。在对象创建,配置和访问原型时,必须提供一种易于构造的语言。
定义一个对象并设置它的原型是一个常见的任务。最好的方式是直接在对象字面量使用一条语句来设置原型。
不幸的是,字面量的局限性不允许用一个简单的解决方案来实现这一点。必须结合使用<代码> object.create()> 代码和对象字面量来设置原型。
var myProto =, { ,,propertyExists:函数(名字),{ ,,,return name 拷贝; ,,} }; var myNumbers =, Object.create (myProto); 输入mynumber [& # 39; arrat& # 39;],=,(1), 6日,7]; myNumbers.propertyExists(& # 39;数组# 39;);,//,=祝辞,真的 myNumbers.propertyExists(& # 39;收集# 39;);,//,=祝辞,假
我认为这种解决方案不够灵活. js是基于原型的,为什么要用原型创建对象那么麻烦?
幸运的是,JavaScript也在慢慢完善. js中许多相当令人不舒服的特性正在一步步的被解决。
这篇文章演示了ES2015是如何解决以上描述的难题,并增加了哪些特性来提升对象字面量的能力:
- <李>
在对象构造函数中设置原型
李> <李>速写式方法声明
李> <李>进行<代码>超级> 代码调用
李> <李>可计算的属性名
李>另外,还有我们可以展望一下将来,看看(草案2)里的新提议:可收集可展开的属性。
1。在对象构造函数中设置原型
正如你已知的,访问已创建对象的原型有一种方式是引用<代码> __proto__ 代码>这个getter属性:
var myObject =, { ,,名字:& # 39;Hello 世界! & # 39; }; myObject.__proto__;,//,=祝辞,{} myObject.__proto__.isPrototypeOf (myObject);,//,=祝辞,真正的
<代码> myObject。__proto__ 代码>返回<代码> myObject> 代码的原型对象。
请注意,不建议将<代码>对象。__ proto__> 代码用作<代码> getter/setter> 代码。替代方法应考虑使用<代码> Object.getPrototypeOf() 代码>和<代码> Object.setPrototypeOf() 代码>。
好消息是,ES2015允许使用<代码> __proto__> 代码在对象字面量<代码> {__proto__: protoObject} 代码>中作为属性名来设置原型。
让我们用<代码> __proto__ 代码>属性为对象初始化,看它是如何改进介绍中描述的不直观方案:
var myProto =, { ,,propertyExists:函数(名字),{ ,,,return name 拷贝; ,,}, }; var myNumbers =, { ,,__proto__: myProto, ,,数组:[1,6,7), }; myNumbers.propertyExists(& # 39;数组# 39;);,//,=祝辞,真的 myNumbers.propertyExists(& # 39;收集# 39;);,//,=祝辞,假JavaScript中的对象字面量有什么