如何在JS中转义对象的所有属性?
var literal = {
valid:'thisIsAValidValue',
toEscape:'ThîsStringNéédsToBéEscàped'
};
//Does not work
escape(literal)
//Does not work either, how to loop over attributes?
$.each(literal.attributes, function(){
this = escape(this);
});
答案 0 :(得分:3)
首先,您确实确定要escape
吗?这是一个旧的,已弃用的功能。
但无论如何,代码的形式不会改变,无论你调用什么函数来转换值:
var key;
for (key in literal) {
literal[key] = escape(literal[key]);
}
或者使用jQuery的$.each
,因为你似乎在使用jQuery:
$.each(literal, function(key, value) {
literal[key] = escape(value);
});
如果你想确保不处理继承的属性(尽管你的literal
将没有任何可枚举的继承属性,除非有人已经非常淘气确实并且为Object.prototype
添加了一个可枚举的属性):
var key;
for (key in literal) {
if (literal.hasOwnProperty(key)) {
literal[key] = escape(literal[key]);
}
}
我的博客上有关for-in
的更多信息:Myths and realities of for..in
答案 1 :(得分:-1)
试试这个
$.each(literal, function(key,value){
literal[key] = escape(value);
});