JS中属性与方法的示例

Example of Properties vs. Methods in JS

本文关键字:方法 属性 JS      更新时间:2023-09-26

我发现属性和方法之间的语义差异有一个很好的描述(转述为http://www.webdeveloper.com/forum/showthread.php?133712-属性-Vs-方法):

性质就像名词。它们有价值或状态。

方法就像动词。他们执行动作。

属性无法执行操作,方法唯一具有的值是在完成执行操作后返回的值。

例如

属性:门可能值:打开、关闭

方法:打开车门操作:将门属性的值更改为";打开";

创建一个例子:我在理论上理解这一点,但我无法想出一个例子。是否可以向我展示door/openDoor在实际Javascript代码中的外观?

实际上,您需要备份并阅读上面发布的一些链接。但举个简单的例子:

var house = {} ;
house.isDoorOpen = false ;
house.openDoor = function(){
    house.isDoorOpen = true ;
}

这里house是对象。它有一个属性:house.isDoorOpen。在这里,它更像是一个形容词。门要么打开(true),要么关闭(false)。听起来,它描述了房子的一处房产。

此外,它还有一个方法openDoor(使用方式如下:house.openDoor())。这是它可以做到的。在这种情况下,操作openDoor会影响isDoorOpen属性,使其成为真。

让我们看看javascript规范ECMA-262如何描述术语属性

http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.26

4.3.26属性

名称和作为对象一部分的值之间的关联

注:根据财产的形式,价值可能为直接表示为数据值(基元值对象或函数对象)或通过一对访问器间接访问功能。

4.3.27方法

属性值的函数

注:当函数被调用为对象的方法时,对象是传递给函数作为其this值。

还有

Javascript对属性的定义与Java的不同

4.3.29属性

定义属性某些特性的内部值


for in,循环通过对象的可枚举属性,其中包括其函数

http://eloquentjavascript.net/1st_edition/chapter8.html

"当函数作为属性查找时,它被称为方法,并立即调用,如object.method()。"

似乎确实有一个更标准的财产定义。。

https://en.wikipedia.org/wiki/Property_(编程)#JavaScript

在一些面向对象的编程语言中,属性是特殊类型的类成员,位于字段(或数据)之间成员)和方法。。。。一些面向对象的语言,例如Java,不支持属性,并且要求程序员定义一对访问器和赋值函数方法。"

在属性的更标准、非javascript定义中

C#有属性,Java没有属性

JavaScript中的对象只是存储在Hash中的键值对。b/w属性和方法的区别在于-属性是存储在哈希键中的值,而方法是存储在散列键中的函数。