为什么我可以为只读属性分配值?

时间:2019-07-17 07:26:19

标签: javascript xpath

很抱歉,如果这是一个简单的问题。在此网页上:

https://datatables.net/examples/api/form.html

我正在使用以下JavaScript将值分配给input元素:

var node = document.evaluate("//tr[contains(td/text(), 'Angelica Ramos')]/td[2]/input", 
  document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
node.singleNodeValue.value = "abc";

结果:

输入框的值将更新。

在阅读有关XPathResult.singleNodeValue的内容时,声明:

  

XPathResult接口的只读singleNodeValue属性   如果没有节点与结果匹配,则返回Node值或null   XPathResult.resultType为ANY_UNORDERED_NODE_TYPE或   FIRST_ORDERED_NODE_TYPE。

那么,如何通过此属性将其分配给基础对象呢?

1 个答案:

答案 0 :(得分:0)

@Felix Kling的答案

如果您分配给只读属性,JavaScript不会引发错误,但是该值实际上并未更改。尝试

var o = {}; Object.defineProperty(o, test, {readonly: true, value: 42}); o.test = 21; console.log(o.test);

node.singleNodeValue是只读的,而不是node.singleNodeValue.valueRead仅表示您不能为该属性分配新值,但这并不意味着您不能更改可变值。

相关问题