转义对象的所有属性

时间:2013-08-23 10:01:26

标签: javascript escaping object-literal

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

2 个答案:

答案 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);
    });