Javascriptのfor..in文はprototypeのインデックスも返す

YY3ai2ui24 14views 更新:2016年3月4日

擬似クラスを作成して、そのオブジェクトのプロパティを出力するコードです。

nameとcolorを持つCarクラスを作成して、そのインスタンスのredCarのプロパティをfor..inで回して表示させてみましょう。

process.stdin.resume();
process.stdin.setEncoding('utf8');
// Here your code !

var Car = function (name, color) {
  this.name = name;
  this.color = color;
  return this;
}

Car.prototype.getColor = function (){
  return this.color;
}

var redCar = new Car("myCarA" ,"red");

for (var prop in redCar){
    console.log(prop + " : " + redCar[prop]);
}

出力はこちらです。

name : myCarA
color : red
getColor : function (){
  return this.color;
}

プロトタイプの中もループで回されるようですね。

プロパティを読み取るメソッドだけなら、こんなコードで、ほしい値を取得できますね。

process.stdin.resume();
process.stdin.setEncoding('utf8');
// Here your code !

var Car = function (name, color) {
  this.name = name;
  this.color = color;
  return this;
}

Car.prototype.getColor = function (){
  return this.color;
}

var redCar = new Car("myCarA" ,"red");

for (var prop in redCar){
    switch (typeof redCar[prop]) {
        case 'function':
            console.log(prop + " : " + redCar[prop]());
            break;

        default:
            console.log(prop + " : " + redCar[prop]);
    }
}

出力

name : myCarA
color : red
getColor : red

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません