__proto__への参照テスト

概要

prototypeに色々値を入れてみての検証

検証

//Define
var Class=function(){};
Class.prototype.x=999;
//Exe
onload=function(){
    var tempClass=new Class();
    console.log(tempClass.x);// 999
    tempClass.x=2;
    console.log(tempClass.x);// 2
    tempClass.x=null;
    console.log(tempClass.x);// null
    tempClass.x=0;
    console.log(tempClass.x);// 0
    tempClass.x=false;
    console.log(tempClass.x);// false
    tempClass.x=undefined;
    console.log(tempClass.x);// undefined
    delete tempClass.x;
    console.log(tempClass.x);// 999
};

メモ

  • インスタンス化後に、参照したプロパティがない場合、__proto__からひっぱってこようとする。 -> 999
  • プロパティに値が代入されると優先的にそちらを参照する -> 2
    • prototypeのプロパティには参照以外を入れても使える。
    • 分かってた事ではあるが、こんな使い方をする人がいるかは不明
      • static的な使い方ができなくもなさそうなので、クロージャ嫌いな人とかが使う…?
  • __proto__から値を参照する条件は (メンバー==false) ではない -> 0 null false undefined
  • 既に値がある場合、 delete 演算子によってまた__proto__から値を参照するようになる。 -> 999