如何在 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);
});
最佳答案
首先,您真的确定要转义
吗?这是一个旧的、已弃用的函数。
但在任何情况下,代码的形式都不会改变,无论您调用什么函数来转换值:
var key;
for (key in literal) {
literal[key] = escape(literal[key]);
}
或者使用 jQuery 的 $.each
,因为你似乎在使用 jQuery:
$.each(literal, function(key, value) {
literal[key] = escape(value);
});
如果你想确保不处理继承的属性(尽管你的literal
不会有任何可枚举的继承属性,除非有人确实非常顽皮并向对象添加了一个可枚举的属性.原型(prototype)
):
var key;
for (key in literal) {
if (literal.hasOwnProperty(key)) {
literal[key] = escape(literal[key]);
}
}
关于 for-in
的更多信息,请访问我的博客:Myths and realities of for..in
关于javascript - 转义对象的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400028/