首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ES5规范对象类型

ES5规范对象类型
EN

Stack Overflow用户
提问于 2015-10-05 17:35:33
回答 2查看 100关注 0票数 1

我正在阅读ES5规范,并对下面这篇文章感到有点困惑:

8.6对象类型..。命名(非内部)属性有两种访问方式: get和put,分别对应于检索和赋值。

有人能澄清这个短语到底指的是什么吗(它的意思是什么?)我只看到了命名的访问器属性getset

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-05 18:16:31

规范说,放置和获取是两个可能发生在属性上的操作。对应于这些操作的[[Get]]

[[Put]]是一个内部方法,存在于每个对象中,它将值存储在对象的属性中。每当您对属性执行赋值操作时,都会导致环境执行[[Put]]

[[Set]]是访问器属性描述符的内部属性。这就是在定义访问器属性的set setter函数时定义的内容。(注意:[[Set]]存在于属性描述符上,而不是对象上。并不是所有的属性都有[[Set]],但是所有的对象都有一个[[Put]]。)

如果您试图对作为访问器属性的对象属性执行[[Put]],则该操作将根据[[Put]]算法的步骤5调用该属性的[[Set]]函数:

  1. 如果IsAccessorDescriptor(desc)为真,则
代码语言:javascript
运行
复制
- a. Let setter be desc.[[Set]] which cannot be undefined.
- b. Call the [[Call]] internal method of setter providing O as the this value and providing V as the sole argument.

简而言之,函数[[Set]]只适用于访问器属性,而[[Put]可以应用于访问器属性或数据属性。

票数 2
EN

Stack Overflow用户

发布于 2015-10-05 18:05:18

它指的是访问数据的方式,而不是函数名。它本质上解释了ES5对象可以以类似的方式访问用于写入的属性,如myObject.property =5和myObject‘’property‘=5或that。它说“非内部”,因为内部属性只能通过原型的使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32954533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档