为什么不是.length一个需要()的方法

时间:2014-06-04 09:10:52

标签: javascript methods member

在JavaScript中,为什么关键字长度为require()?似乎所有其他函数,如splice(),shift()都需要括号。

5 个答案:

答案 0 :(得分:4)

我们只能推测为什么它是一个普通的财产,而不是一种方法。

但是,.length是每个字符串/数组的常量值,它在计算时不会修改任何内容(它不是"执行"就像方法一样),并且无论如何它不会采取任何参数。因此它很适合作为访问者财产。

此外,分配给.length允许我们控制数组的大小(缩小/扩展它)。使用现有属性作为setter比引入额外的.setLength(…)方法更方便(或者至少是惯用)。

答案 1 :(得分:2)

长度不是一种方法。这是一个属性。见MDN

调用属性时,不需要括号。 属性是对象“自我”知道的东西。 javascript中的数组或字符串知道它的长度。方法需要计算。

如果javascript确实需要在每次想要长度时计算字母,那么长度可能是javascript字符串的一种方法。

从属性中获取值时,您可以假设获取其值的速度比从方法调用获取值的速度快。 (虽然情况并非总是如此)

答案 2 :(得分:1)

长度是属性,而不是函数。因此它不需要括号()。

在对象更改时计算并更新length属性,而调用函数length()将在每次调用时计算此值。

答案 3 :(得分:1)

spliceshift是根据当前状态和/或参数计算内容的操作。此外,他们改变阵列。相比之下,length对于给定数组是常量,没有操作需要检索它。没有必要使它成为一种功能。

答案 4 :(得分:1)

添加到我的评论

JavaScript数组length属性返回数组中的元素数。 它始终大于数组的最大索引值

如果需要(不建议),可以更改length属性

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length

EcmaScript语言规范,将length设计为属性。

Read Here