• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptの標準仕様で用意されているオブジェクトを拡張しても)

JavaScriptの標準仕様で用意されているオブジェクトを拡張してもよいのか?

このQ&Aのポイント
  • JavaScriptの標準仕様で用意されているオブジェクトを拡張してよいのか疑問です。
  • 例えば、Arrayオブジェクトを拡張して降順ソートを行うことは仕様に含まれているのか知りたいです。
  • また、自作のオブジェクトを作成して拡張する方法もあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.2

「for~in によるプロパティ列挙でprototypeで拡張したプロパティまで拾う」 という挙動を承知していれば、問題はないと思います。 ----- Array.prototype.descending = function(){  this.sort(function(a,b){return(b-a);});  return this; } var data = [1,2,3,4]; data.descending(); for(var key in data){  console.log(key); // descendingも拾ってしまう } for(var key in data){  if(data.hasOwnProperty(key)){   console.log(key); // descendingは拾わない  } } ----- hasOwnProperty - MDC https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty ただ、自分自身が理解していても、他の人が制作されたライブラリを使っていると障害になることもあります。 私は以前、この件で疑問に思うところがあって質問しています。 Array.prototype は使用しない方がいい? | OKWave http://okwave.jp/qa/q5081024.html

KenkyuHard
質問者

お礼

ありがとうございます。 確かに、for(i in xxx){}で拾っちゃいますね。 たまに使う事がありますね。注意します。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

メモリリークやライブラリ同士の仕様の競合などトラブルは予見されますが 公なサービスや、仕事として受けた納品物ではなく個人的に使う分にはダイレクトに いじってもそんなに迷惑はかかりません。

関連するQ&A