1

如何在 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);
});
4

2 回答 2

3

首先,你确定你想要escape?这是一个旧的,已弃用的功能。

但无论如何,代码的形式都不会改变,无论您调用什么函数来转换值:

var key;
for (key in literal) {
    literal[key] = escape(literal[key]);
}

或者使用 jQuery's $.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我的博客:神话和现实for..in

于 2013-08-23T10:05:24.130 回答
-1

尝试这个

   $.each(literal, function(key,value){
       literal[key] = escape(value);
    });
于 2013-08-23T10:07:58.470 回答