読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

いちいちhasOwnPropertyを使わなくてよくする(ジェネレータの使いかた)

javascript

prototypeを拡張していると、forやfor eachでループしたときに、それも列挙されてしまって、困る。
なので、for(var i in o)if(o.hasOwnProperty(i){doSomething()};とすることが多いのだけど、hasOwnPropertyというメソッド名が長いので、面倒臭い。また、プロパティの名前が必要なので、for eachは使えなくなってしまう。
なので、下のようにするといい。for each相当ではなくfor相当にしたければ、(o[i]を(iにすればいい。

function own(o)
  (o[i] for(i in o)if(o.hasOwnProperty(i)));

Array.prototype.__defineGetter__("first",function()this[0]);
Array.prototype.__defineGetter__("last",function()this[this.length-1]);

for(var i in [1,2,3])
  console.log("normal:" + i);


for(var i in own([1,2,3]))
  console.log("own:" + i);