我有这个Javascript对象.
req.session
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我向此对象添加属性.这些属性可以是其他对象,数组或纯字符串.
req.session.savedDoc = someObject;
req.session.errors = ['someThing', 'anotherThing', 'thirdThing'];
req.session.message = 'someString'
Run Code Online (Sandbox Code Playgroud)
如果我以后想要删除此对象的所有添加属性,最简单/最好的方法是什么?
必须有比这更好的方法吗?
// Delete all session values
delete req.session.savedDoc;
delete req.session.errors;
delete req.session.message;
Run Code Online (Sandbox Code Playgroud) 如前所述这里,似乎清空现有阵列(不是分配一个新的)JavaScript中的最有效的方法是使用:
array.length = 0;
Run Code Online (Sandbox Code Playgroud)
相同的操作是否适用于普通对象?(又名"关联数组"或"字典")如果没有,清空现有javascript对象的最有效方法是什么?
我认为分配一个新的不是最好的选择,因为它会将一些额外的工作推送到垃圾收集器,并在堆上分配一些新的内存,但我可能错了.
我需要一个至少适用于Chrome和Firefox的解决方案.
我是一名使用JavaScript的C/C++/Java程序员.
我正在尝试编写一个删除对象'obj'的所有属性的函数.我已经阅读了关于" 如何快速清除Javascript对象? " 的帖子,并看到有两个答案:(1)创建一个新的'obj'(我不想做,因为我的代码很高在移动浏览器中运行的性能程序,我希望最小化垃圾收集); (2)迭代循环中对象的属性并删除属性.后一种方法在Chrome 12中不起作用.
请考虑以下代码:
var foo = {};
foo['baz'] = 'bar';
console.log("1. foo.baz = " + foo.baz);
delete foo.baz;
console.log("2. foo.baz = " + foo.baz);
foo['baz'] = 'bar';
console.log("3. foo.baz = " + foo.baz);
for (prop in foo)
{
if (foo.hasOwnProperty(prop))
{
console.log("deleting property " + prop);
delete foo.prop;
}
}
console.log("4. foo.baz = " + foo.baz);
Run Code Online (Sandbox Code Playgroud)
这会在Chrome 12上的控制台中产生以下结果:
1. foo.baz = bar
2. foo.baz = undefined
3. foo.baz = bar
deleting property baz
4. foo.baz …Run Code Online (Sandbox Code Playgroud) 我正在使用omniture并跟踪各种属性到"s"变量进行跟踪.我跟随的示例代码在每个跟踪事件之后调用一个名为s.clearVars()的函数.但我得到一个错误,说clearVars不是一个有效的函数.有谁知道我应该打电话来清除跟踪对象?或者如何从javascript对象中清除所有属性.
假设我obj1只有可枚举的属性:
var obj1 = { a: 1, b: 2, c: 3 };
Run Code Online (Sandbox Code Playgroud)
然后我创建obj2一个包含对以下内容的引用obj1:
var obj2 = obj1;
obj1 === obj2; // true
Run Code Online (Sandbox Code Playgroud)
在某些时候,我想重置obj1为空对象:
for (key in obj1) {
delete obj1[key];
}
obj1 === obj2; // true
Run Code Online (Sandbox Code Playgroud)
但我想避免迭代所有属性:
obj1 = {};
obj1 === obj2; // false (this obviously doesn't work)
Run Code Online (Sandbox Code Playgroud)
还有其他解决方案吗?