我曾经认为改变一个 HTML 元素的属性值会导致属性值改变,但是改变属性值不会导致属性改变,因为属性就像 HTML 描述的蓝图,而属性是“实时数据”。
但事实证明,使用纯 JavaScript,如果我们改变属性值,属性值也会改变。虽然一般来说,属性值可以是任何数据类型,例如字符串、布尔值或对象,而属性值只能是字符串。另一个区别是属性名称不区分大小写,但属性名称区分大小写。(如 JavaScript 权威指南第 6 版,第 375 - 376 页中所述)。
我试过了:http: //jsfiddle.net/5nBM3/1/
在http://jsfiddle.net/5nBM3/2/中设置属性值,在http://jsfiddle.net/5nBM3/3/中设置属性值。
如果我们使用以下方法设置属性值:
el.setAttribute("src", "http://i.imgur.com/4rE6FHV.gif");
那么很明显,在 里面setAttribute()
,它也可以调整属性值。但是如果我们使用以下方法设置属性值:
el.src = "http://i.imgur.com/4rE6FHV.gif";
因此,如果我们将其视为obj.x = 1
,那么它不应导致其他任何更改。上面的行如何导致属性值也发生变化?是不是由
- 对象的 setter 和 getter 函数与 ECMA-5(以及某些 ECMA-3 实现中)类似,如果对象只有属性
x
andy
,我们可以为半径定义 setter 和 getterr
,并将其用作a = obj.r
orobj.r = 3
,这样获取半径将调用一个函数来使用x
and来计算它y
,而 settingr
将调用一个函数来根据 new调整x
and的值,或者y
r
- 一些观察者模型,使属性观察属性值的变化,而属性观察属性值的变化,或者
- 我们可以认为它只是一个黑盒子或“魔术”,客户端 JavaScript 始终保持属性和属性之间的值等价?