这些似乎意味着同样的事情。但是在什么情况下哪个词更合适呢?
11 回答
一般而言(以及正常的英语用法),这些术语的含义相同。
在 HTML / Javascript 的特定上下文中,术语会混淆,因为 DOM 元素的 HTML 表示具有属性(在 XML 中用于标记中包含的键/值对的术语),但是当表示为 JavaScript 对象时,这些属性显示为对象属性。
更令人困惑的是,对属性的更改通常会更新属性。
例如,更改element.href
属性将更新元素上的href
属性,这将反映在对element.getAttribute('href')
.
但是,如果您随后阅读该属性,它将被规范化为绝对 URL,即使该属性可能是相对 URL!
这些词在计算机科学出现之前就已经存在了。
属性是我们归因于某人或某物的品质或对象。例如,权杖是权力和国家地位的属性。
财产是一种没有任何归属的品质。例如,粘土具有粘性;即,粘土的一个特性是它的粘合性。另一个例子:金属的特性之一是导电性。属性通过物理现象展示自己,而无需将它们归因于某人或某物。同理,说某人有阳刚之气是不言而喻的。实际上,您可以说财产归某人或某物所有。
公平地说,在计算机科学中,这两个词至少在大多数情况下可以互换使用——但程序员通常没有英语文学学位,也不写或关心语法书:)。
属性是您在 HTML 标记中使用的实际内容,例如
<input type="checkbox" checked="checked" />
在此实例中,类型和选中是属性。该属性是这些属性的值,浏览器将其保存在 DOM 元素中。通常属性和属性的值是相等的,这就是它如此混乱的原因。
在此示例中,DOM 元素input
具有type
带有值的属性和带有值的"checkbox"
属性(请注意此值与 HTML 属性中的值有何不同)。checked
true
使用 Firebug,您可以在单击元素并选择“DOM 视图”时观察属性的行为。
通常使用属性来描述机制或现实世界的事物。
属性用于描述模型。
例如,一份文档(放在您的办公桌上)可能具有草稿的属性。
为文档建模的类有一个属性来指示它是否是草稿。在这种情况下,属性捕获状态。
这些术语的确切含义在很大程度上取决于您所谈论的语言/系统/宇宙。
例如,在 HTML/XML 中,属性是标记中带有等号和值的部分,而属性没有任何意义。
因此,我们需要有关您正在讨论的领域的更多信息。
在 Python...
class X( object ):
def __init__( self ):
self.attribute
def getAttr( self ):
return self.attribute
def setAttr( self, value ):
self.attribute= value
property_name= property( getAttr, setAttr )
属性是一个类似属性的名称,它包装了 setter、getter(和 deleter)函数的集合。
属性通常是另一个对象中的单个对象。
然而,话虽如此,Python 为您提供了__getattr__
允许您扩展“属性”定义的方法。
底线 - 它们几乎是同义词。Python 对它们的实现方式进行了技术区分。
属性和属性有什么区别?
功能和功能有什么区别?Characteristic 和 Character 和有什么不一样?行为和行为有什么区别?
它只是上下文的变化。
对象、产品、个性、人
一个人在一种行为中行动。人格具有给定角色的特征。产品具有派生功能的特征。对象具有赋予它属性的属性。
在 Java(或其他语言)中,使用 Property/Attribute 取决于用法:
值不经常更改时使用的属性(通常在启动时使用或用于环境变量)
属性是一个元素(对象)的值(对象子),它可以经常/一直改变并且是持久的或不持久的
在 HTML 中,属性似乎特定于 DOM 树,而属性用于描述 DOM 元素的特征
Delphi 使用了属性,并且他们已经找到了进入 .NET 的方式(因为它具有相同的架构师)。
在 Delphi 中,它们通常与运行时类型信息结合使用,以便可以使用集成的属性编辑器在设计时设置属性。
属性并不总是与字段相关。它们可能是可能有副作用的功能(但当然这是非常糟糕的设计)。
<property attribute="attributeValue">proopertyValue</property>
将是看待它的一种方式。
在 C# 中
[Attribute]
public class Entity
{
private int Property{get; set;};