Javascript 类列表是以什么方式只读的?

Javascript 类列表是以什么方式只读的?,javascript,Javascript,根据学校的说法: classList属性是只读的 但是,这很好: document.querySelector('body').classList = 'body-class'; 实例: document.querySelector('body').classList='body class' .body类{ 颜色:蓝色; } 测试1 2 3根据,属性确实是只读的: [SameObject, PutForwards=value] readonly attribute DOMTokenLi

根据学校的说法:

classList属性是只读的

但是,这很好:

document.querySelector('body').classList = 'body-class';
实例:

document.querySelector('body').classList='body class'
.body类{
颜色:蓝色;
}
测试1 2 3
根据,属性确实是
只读的

 [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
根据规范:

如果在属性关键字之前使用
readonly
关键字,则该属性为只读。实现定义了只读属性的接口的对象将不允许分配给该属性。语言是否简单地禁止赋值、是否忽略赋值或是否引发异常都是语言绑定特有的

但是您也可以在那里看到一个
putforts=value

如果[PutForwards]扩展属性出现在类型为接口类型的只读常规属性声明上,则表示分配给该属性将具有特定行为。也就是说,分配被“转发”到当前被分配到的属性所引用的对象上的属性(由扩展属性参数指定)

.classList
的值是一个。因此,如果您分配给
类列表
,则实际上是分配给
.classList.value

interface DOMTokenList {
  ...
  [CEReactions] stringifier attribute DOMString value;
};


有人说这是一个bug:很可能是因为它是未指定的行为,或者浏览器认为它是一个有用的特性,不管官方规范怎么说。有时规范会更新以反映实际情况,可能是在某个时候添加了
PutForwards=value
部分。

@SamuliHakoniemi-你确定吗?噢,实际上它似乎应用了带有字符串的列表的值,我坚持更正。因此,基本上与
document.body.classList.add('body-class')
一样,不要把W3C(标准组织)与W3C(广告充斥的低质量教程工厂和良好的SEO)混淆起来。@SamuliHakoniemi:它似乎是在替换内容,而不是添加内容。但我还没有在快速搜索中找到这方面的规范。@Liam-这就是WG而不是W3CI认为我们可以确定这不是一个bug的原因。这可能是因为一些早期的实现认为这是一个好主意(?),但这不是偶然的。他们一定是故意的(哇,
classList
10年前就出现在Firefox 3.6中了!)@T.J.Crowder:是的,让我换一种说法。