JS中属性与方法的示例

时间:2013-02-19 08:35:02

标签: javascript methods properties

我找到了一个很好的描述属性和方法之间的语义差异(通过http://www.webdeveloper.com/forum/showthread.php?133712-Properties-Vs.-Methods释义):

  

属性就像名词一样。他们有价值或国家。

     

方法就像动词一样。他们会采取行动。

     

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

     

e.g。

     

财产:门; 可能的值:打开,关闭

     

方法:openDoor; 操作:将门属性的值更改为“打开”

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

2 个答案:

答案 0 :(得分:16)

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

var house = {} ;

house.isDoorOpen = false ;

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

这里house是对象。它有一个属性:house.isDoorOpen。在这里,它更像是一个形容词。门打开(真实)或关闭(假)。听起来,它描述了房子的属性。

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

答案 1 :(得分:1)

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

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

  

4.3.26属性

     

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

     

注意取决于属性的形式,值可能是   直接表示为数据值(原始值,a   对象或函数对象)或间接由一对存取器   功能

     

4.3.27方法

     

作为属性值的函数

     

注意当函数作为对象的方法调用时,对象是   传递给函数作为它的值。

另外

Javascript的属性定义与Java的不同

  

4.3.29属性

     

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

for in,循环访问对象的可枚举属性,并包含其功能

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

  

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

似乎有更标准的财产定义..

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

  

"在一些面向对象的编程语言中,属性是一种   特殊类的成员,介于字段(或数据之间)   成员)和方法。 ....一些面向对象的语言,如   Java,不支持属性,并要求程序员定义一个   改为使用accessor和mutator方法。"

在那个更标准,非javascript的属性定义

C#具有属性,而Java没有属性