如何使对象属性直接返回document.body这类对象?
实现自定义对象属性动态返回body元素(类似document.body)
静态赋值(一次性获取)
如果页面的body元素不会被动态替换,直接赋值当前body元素即可:
const docObj = { property1: value1, property2: value2, bodyProperty: document.body, // 直接绑定当前body元素的引用 bodyMethod: function(){ return document.body; } };
注意:这种方式的局限性是,若后续页面的body元素被替换(比如通过document.body = newBody),docObj.bodyProperty会保留旧的元素引用,不会自动更新。
使用Getter实现动态返回(和document.body行为一致)
document.body本质是一个getter属性——每次访问它时,都会执行内部逻辑返回最新的body元素。你可以用ES6的get语法复刻这个行为:
const docObj = { property1: value1, property2: value2, // 定义getter属性,每次访问都会触发函数执行 get bodyProperty() { return document.body; // 返回当前最新的body元素 }, bodyMethod: function(){ return document.body; } };
现在每次访问docObj.bodyProperty,都会实时返回当前页面的body元素,和document.body的表现完全一致。
如果需要支持设置属性(比如docObj.bodyProperty = newBody),还可以搭配setter:
const docObj = { property1: value1, property2: value2, get bodyProperty() { return document.body; }, set bodyProperty(newBody) { document.body = newBody; // 实现自定义的设置逻辑 }, bodyMethod: function(){ return document.body; } };
内容的提问来源于stack exchange,提问作者Ken Kaneki
相关产品推荐
相关产品推荐

