0

このページには例があります:

for (var name in buz) {
   if (buz.hasOwnProperty(name)) {}
}

プロトタイプで物を見ないように保護するため。このハックにより、「for in」ステートメントは JavaScript ではほとんど役に立たなくなりました。現在のアドバイスは、「for in」を使用しないことです。

Q: if (buz.hasOwnProperty(name)) {} 条件を自動的に含むカスタムの「for in」関数を作成することは可能ですか?

私は次のようなことを考えています:

window.whatFor = function(variable,object) {
   for (var variable in object) [
      if (object.hasOwnProperty(variable) {
         do something here
      }
   }
}

使用法:

whatFor(name,buz) {
do something here 
}
4

2 に答える 2

5

私はこれがあなたが望むものだと思います

window.whatFor = function(obj,funct) {
   for (var v in obj) {
      if (obj.hasOwnProperty(v)) {
         funct(v);
      }
   }
}

それで。

whatFor(sam, function (x) { alert(x); } );

それをいじってください-なぜなら、なぜですか?

于 2013-03-16T02:56:23.453 に答える
1

なぜあなたがオブジェクトに執着whatForしているのか、私には本当にわかりません。windowそうすることで、コード ブラウザが固有になります。Web ワーカーで使用することさえできません。

これは私がすることです:

var global = typeof global !== "undefined" ? global :
             typeof self !== "undefined" ? self : this;

global.whatFor = whatFor;

function whatFor(object, callback) {
    var hasOwn = {}.hasOwnProperty.bind(object);

    for (var property in object)
        if (hasOwn(property))
            callback(property);
}

お気づきかもしれませんが、object.hasOwnProperty(property)私は電話をかけるhasOwn(property)代わりに電話をかけています。これは、hasOwnPropertyメソッドがオブジェクトのプロトタイプ チェーンに存在しない可能性があるためです。

于 2013-03-16T03:26:14.637 に答える