【发布时间】:2012-08-11 12:08:53
【问题描述】:
我正在寻找一种在不重新定义对象的情况下将 javascript 对象添加到 DOM 的方法。
我创建了一个函数,它将所有对象方法放入一个新对象中,将该对象重新定义为一个新的 DOM 元素,并将所有对象放回它上面,但这并不是我想要的。我需要在不使用任何返回语句的情况下更新对象。
我这里有一个例子:http://jsfiddle.net/y56wS/
function addToDOM(obj) {
temp = {};
for (p in obj) {
temp[p] = obj[p];
}
obj = document.createElement('prop');
document.body.appendChild(obj);
for (p in temp) {
obj[p] = temp[p];
}
return obj;
}
var obj = {var1:123};
obj = addToDOM(obj);
生成的代码模板应该是这样的:
function addToDOM(obj) {
//Code for method
//No return statement
}
var obj = {var1:123};
//No obj=
addToDOM(obj);
要做到这一点,addToDOM 函数中必须没有 obj =,这样它就不会被重新定义,也不需要 return 语句。有没有办法简单地将 javascript 对象扩展到 DOM 上?
【问题讨论】:
-
“我正在寻找一种将 javascript 对象添加到 DOM 的方法” - 让我停下来告诉你 嗯?为什么?显然我完全没有抓住重点,因为将 JS 对象添加到 DOM 的想法对我来说毫无意义。浏览器将如何显示它?如果它不显示它,你为什么要这样做?
-
很抱歉没有详细说明。我正在尝试创建一个 defineObject getter/setter polyfill(ish) 的东西,这样我的代码就可以在 IE6+ 以及所有其他主要浏览器中运行。许多人都知道,如果对象是 DOM 的一部分,这仅在 IE8 中是可能的,如果它也在 DOM 中,我有一个针对 IE6/7 的解决方法。只要我在定义
obj = {}后调用obj = addToDOM(obj),Object.defineProperty 就可以完美运行。我只是想做它,这样我就可以将addToDOM(obj)包含在polyfill 中,为此我必须将它添加到DOM 元素而不重新定义它。是不是更清楚了?
标签: javascript javascript-objects dom