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 を使用$.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 に答える