Hatena::ブログ(Diary)

nazonoDiary

2005-04-25 月

Object オブジェクトの prototype に便利メソッドを放り込むのはやめて頂きたい

| 05:36 | Object オブジェクトの prototype に便利メソッドを放り込むのはやめて頂きたいを含むブックマーク Object オブジェクトの prototype に便利メソッドを放り込むのはやめて頂きたいのブックマークコメント

JavaScriptの便利系ライブラリで、Object の prototypeにいろいろ放り込むのがあるけど、やめていただきたい。例えば http://prototype.conio.net/ の Object.prototype.extend とか。便利なんだけどね。

Object.prototype.extend = function(object) {
  for (property in object) { this[property] = object[property]; }
  return this;
}

わかる、わかるよやりたいことは。あれば確かに便利だ。そしてオブジェクト指向の考え方からして、そこにあるべきだろう。

でも、

info={name:"タロウ",tel:"090-xxx-xxx"};
for( i in info ){
 document.write( i+"="+ info[i]+"<br>" );
}

とかやったときに、extend も列挙されちゃうんだよ! 実際に問題になることは「少ない」けどさぁ。DontEnum 属性を指定する方法とか無い物か。

で、だから普通に Object_extend とかの関数名で定義されたし。