Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 房地产属性的优势是什么;特写“;在ECMAScript-5中?_Javascript_Ecmascript 5 - Fatal编程技术网

Javascript 房地产属性的优势是什么;特写“;在ECMAScript-5中?

Javascript 房地产属性的优势是什么;特写“;在ECMAScript-5中?,javascript,ecmascript-5,Javascript,Ecmascript 5,我想了解更多关于此处描述的属性属性的用法: 我可以想象这些属性的用例,但它们非常罕见。 此外,可写、可枚举和可配置属性在默认情况下设置为false,但大多数情况下我希望这些值为true,因此我必须对它们进行设置。为什么默认情况下它们是错误的 制作对象并设置其属性对我来说是非常基本的事情。现在有了属性描述符,我可以把它描述成人工的、不自然的、复杂的或不舒服的。也许我错过了一些非常重要的东西 所以我的问题是:房地产属性的主要目的是什么。我们如何使用它们? 我可以避免使用属性描述符吗?例如,使用一些

我想了解更多关于此处描述的属性属性的用法:

我可以想象这些属性的用例,但它们非常罕见。 此外,可写、可枚举和可配置属性在默认情况下设置为false,但大多数情况下我希望这些值为true,因此我必须对它们进行设置。为什么默认情况下它们是错误的

制作对象并设置其属性对我来说是非常基本的事情。现在有了属性描述符,我可以把它描述成人工的、不自然的、复杂的或不舒服的。也许我错过了一些非常重要的东西

所以我的问题是:房地产属性的主要目的是什么。我们如何使用它们?


我可以避免使用属性描述符吗?例如,使用一些可以为我设置属性的好模式?例如,如果我使用Object.create和第二个参数“Properties”,它会强制我使用属性描述符。那么我应该避免使用这个吗

可写的默认值为
false
仅当

如果本规范未明确指定命名属性的属性值

例如,对于手动定义的属性,它将是
true
。需要注意的是,没有任何规范的ecmascript本身与javascript/jscript方言之间存在巨大差异


无论哪种方式,一般来说,您都不应该使用这些属性属性做任何事情,除非您正在考虑创建一个框架或其他类似的东西。例如,prototype.js可以使用它将
Enumerable
设置为
false
,我自己也使用它来重新定义
Get
,以允许开发人员更容易使用一点外来语法(类似于不同的本机语法),但是在做普通的事情时,你不需要它。

可写的默认值是
false
,只有当

如果本规范未明确指定命名属性的属性值

例如,对于手动定义的属性,它将是
true
。需要注意的是,没有任何规范的ecmascript本身与javascript/jscript方言之间存在巨大差异

无论哪种方式,一般来说,您都不应该使用这些属性属性做任何事情,除非您正在考虑创建一个框架或其他类似的东西。例如,prototype.js可以使用它将
Enumerable
设置为
false
,我自己也使用它来重新定义
Get
,以允许开发人员更容易使用一点奇特的语法(类似于不同的本机语法),但在做正常的事情时,您不需要它

“…我主要希望这些值为真,因此我必须设置它们。”

除非你需要它们。如果没有,则只需使用典型的对象文字语法,或新属性的赋值运算符

“为什么默认情况下它们是错误的?”

我想这是因为已经有了一种语法,可以将它们默认为
true

“生成对象并设置其属性对我来说是非常基本的事情。现在有了属性描述符…”

一切都没有改变。它和以前一样基本。如果您需要,您可以使用更多的工具

“…我可以形容为人为的、不自然的、复杂的或不舒服的。”

语法可能有点麻烦,但是如果您不喜欢它,就不要使用它。如果您需要将属性描述符设置为除
true
之外的其他值,那么我认为您会很高兴拥有这些新功能,而不管其语法如何

此外,ECMAScript 6中的对象文字语法中可能添加了属性描述符定义

“所以我的问题是:房地产属性的主要用途是什么?我们如何使用它们?”

这应该是不言自明的。它们用于手动配置对象属性的
可配置
可写
可枚举
设置。如果您遇到需要这些设置之一的情况,您将使用它们

“我可以避免使用属性描述符吗?”

当然。同样,一切都没有改变。如果你需要它们,它们就在那里。如果你没有,那么就忽略它们

“例如,使用一些好的模式为我设置属性?”

不确定您的意思,但如果您想要不同的默认值,只需使用辅助函数,如:

function addWriteable(obj, prop, value) {
    return Object.defineProperty(obj, prop, {
        writeable: true
    });
}
“…我主要希望这些值为真,因此我必须设置它们。”

除非你需要它们。如果没有,则只需使用典型的对象文字语法,或新属性的赋值运算符

“为什么默认情况下它们是错误的?”

我想这是因为已经有了一种语法,可以将它们默认为
true

“生成对象并设置其属性对我来说是非常基本的事情。现在有了属性描述符…”

一切都没有改变。它和以前一样基本。如果您需要,您可以使用更多的工具

“…我可以形容为人为的、不自然的、复杂的或不舒服的。”

语法可能有点麻烦,但是如果您不喜欢它,就不要使用它。如果您需要将属性描述符设置为除
true
之外的其他值,那么我认为您会很高兴拥有这些新功能,而不管其语法如何

此外,ECMAScript 6中的对象文字语法中可能添加了属性描述符定义

“所以我的问题是:房地产属性的主要用途是什么?我们如何使用它们?”

这应该是不言自明的。它们用于手动配置
可配置
可写<