概要
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