1

我曾经认为改变一个 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,那么它不应导致其他任何更改。上面的行如何导致属性值也发生变化?是不是由

  1. 对象的 setter 和 getter 函数与 ECMA-5(以及某些 ECMA-3 实现中)类似,如果对象只有属性xand y,我们可以为半径定义 setter 和 getter r,并将其用作a = obj.ror obj.r = 3,这样获取半径将调用一个函数来使用xand来计算它y,而 settingr将调用一个函数来根据 new调整xand的值,或者yr
  2. 一些观察者模型,使属性观察属性值的变化,而属性观察属性值的变化,或者
  3. 我们可以认为它只是一个黑盒子或“魔术”,客户端 JavaScript 始终保持属性和属性之间的值等价?
4

0 回答 0