IEだと toString を呼んでくれない

自分が使いやすいように下記のようなカラー オブジェクト(クラスのようなもの)を作っていたんですが、どうも IE では toString を呼んでくれないようだ。

function Color(){
 this.initialize.apply(this, arguments);
}
Color.prototype = {
 initialize:function(arguments){
  var r = arguments.r || 0;
  var g = arguments.g || 0;
  var b = arguments.b || 0;
  var name = arguments.name || "";
  var code = arguments.code || "";
  this.R = function(){ return r; };
  this.G = function(){ return g; };
  this.B = function(){ return b; };
  this.Name = function(){ return name; };
  this.Code = function(){ return code; };
 },
 toString:function(){
  return (this.Code());
 }
}

Color.aqua = function(){
 return new Color({r:0, g:255, b:255, code:"#00ffff", name:"aqua"});
}

上の Color オブジェクトは toString を書き換えてカラーコードを返すようにしています。

で、こんな感じで使用するつもりでした。
$(function(){
 $("div").css("background-color", Color.aqua()); 
});

Firefox や Chrome ではちゃんと背景色が変わるんですが、IE では toString が呼ばれないため、結果として背景色が変わらない。

何かとウザス、IE の奴め!

0 Comments:

Recent Posts