javascript - 有人可以解释为什么 document ["write"] 有效吗?

标签 javascript

我今天正在帮助对一个 javascript 片段进行去混淆处理,我很惊讶地发现了这个:

document["write"]('obfuscated code here');

“写”这个词也被混淆了,这使得理解代码的意图变得稍微困难​​一些。

我以前从未见过将文档视为数组的情况,我很好奇它是如何/为什么起作用的。是否有其他函数可以以类似的方式调用?

最佳答案

document 是一个 Javascript 对象(不是数组)。可以通过点 (parent.child) 或下标 (parent['child']) 语法访问对象字段。

你可以自己试试:

var myObject = {
  field: 'hello!'
}

console.log(myObject['field']);
console.log(myObject.field);

当您的字段名称不是有效的 Javascript 标识符时,下标语法很有用:

var myObject = {
  'my-field': 'hello!'
}

console.log(myObject['my-field']);     // Works as expected
console.log(myObject.my-field);        // ReferenceError
console.log(myObject.'my-field');      // SyntaxError

参见 MDN docs on property accessors .

关于javascript - 有人可以解释为什么 document ["write"] 有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543774/

相关文章:

javascript - ajax 调用后追加所选内容

javascript - 单击按钮时 Ajax 从 Django 1.9 代码中获取新值

javascript - 检查文本字段值长度

javascript - typescript:如何从 2 个不同的对象集中获取具有相同属性值但不同键的对象

javascript - Dynamoose/DynamoDB 更新将空数组保存为 null

Javascript/OpenLayers 匹配

javascript - 有没有办法在c3js上覆盖c3_chart_internal_fn.generateResize?

javascript - 检查表单是否已保存在 CRM 2011 Javascript 中

javascript - 如何在 Angular.js 中创建新的标签元素

javascript - 使用 Mixpanel JQL 访问 .filter() 范围内的变量