javascript - 模拟 DOM 对象

标签 javascript dom ecmascript-5

Property属性控件 + 访问器属性 = 能够在 ES5 代码中模拟 DOM api。

在下面的代码中,对于访问器属性,

var domObj = document.body;
Object.defineProperty(domObj, 'innerHTML', {
                            get: innerHTML(){return innerHTML;},
                            set: innerHTML(newHTML){innerHTML = newHTML;} 
                            });

控制台在属性列表之后给出语法错误 missing }

属性列表语法有问题吗?

最佳答案

缺少 function 关键字:

Object.defineProperty(domObj, 'innerHTML', {
  get: function(){return innerHTML;},
  set: function(newHTML){innerHTML = newHTML;} 
});

你也可以使用

Object.defineProperty(domObj, 'innerHTML', {
  get(){return innerHTML;},
  set(newHTML){innerHTML = newHTML;} 
});

或者箭头函数

Object.defineProperty(domObj, 'innerHTML', {
  get: () => innerHTML,
  set: (newHTML) => {innerHTML = newHTML;} 
});

var innerHTML = 123,
    domObj = document.body;
Object.defineProperty(domObj, 'innerHTML', {
  get: function(){return innerHTML;},
  set: function(newHTML){innerHTML = newHTML;} 
});
snippet.log(domObj.innerHTML); // 123
domObj.innerHTML = "abc";
snippet.log(innerHTML); // "abc"
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --><script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 模拟 DOM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932940/

相关文章:

javascript - While 循环使用 jQuery 异步 AJAX 调用

javascript - 使用部分替换存储为字符串的html元素

javascript - 不执行 switch 语句中的所有情况

javascript - 无法读取未定义的属性 'cnt'

javascript - 如何定期刷新svg中的Href

php - $_GET、$_SESSION 和 XMLHttpRequest 的问题

javascript - ES6 将一个数组的元素归约成一个数组,其元素出现的频率

java - 如何通过Jsoup获取 "select"html元素?

javascript - 选择从push.apply([user.email, user.groupName])构建的数组的左侧部分

javascript - 如何摆脱算法的复杂性?