[Edge]。→、
proto | 生成するオブジェクトのプロトタイプになるべきオブジェクト。null または Object(プリミティブ ラッパー オブジェクト(値を含むオブジェクト)を除く)。 |
---|---|
properties | 省略可。追加するプロパティと定義データのオブジェクト。→Object.defineProperties():props |
新しい Object オブジェクト。
//proto D=Object.create({}); //={}(Object) //=[object]:[object Object] D.p=10; // //D =[object]:[object Object] //p=[number]:10 D=Object.create(null); //エラー発生:Cannot convert object to primitive value D=Object.create(undefined); //エラー発生:Object prototype may only be an Object or null: undefined D=Object.create(); //エラー発生:Object prototype may only be an Object or null: undefined //オブジェクト プロトタイプは、オブジェクトまたは null のみにすることができます D=Object.create({null}); //エラー発生:Unexpected token 'null'
//propertiesObject D=Object.create({p1:10}, {p2:{value:20}}); //p1=10(プロトタイプ)、p2=20。 //=[object]:[object Object] //p1=[number]:10。p2が列挙できない。 //D.p1 =[number]:10 //D.p2 =[number]:20 D.p2="あ"; //D.p2 =[number]:20。変更できない。 D=Object.create({p1:10}, {p2:{value:20, writable:true}}); //p1=10(プロトタイプ)、p2=20(書き込み可)。 //=[object]:[object Object] //p1=[number]:10 D.p2="あ"; //D.p2 =[string]:あ。書き込めた。 //読めないプロパティを読んでみる D=Object.create({p1:10}, {p2:{value:20}}); //p1=10(プロトタイプ)、p2=20。 //=[object]:[object Object] //p1=[number]:10。p2が列挙できない。 //D.p2 =[number]:20 DA=Object.getOwnPropertyDescriptors(D); //全てのプロパティ記述子を得る。 //=[object]:[object Object] //p2=[object]:[object Object] //DA.p2 =[object]:[object Object] //value=[number]:20 //writable=[boolean]:false //enumerable=[boolean]:false //configurable=[boolean]:false
function C(){ this.x = 0; } C.prototype.test=function(x){ //testに処理を割り当て。 this.x += x+2; }; function F(){ C.call(this); DA=this; //=[object]:[object Object] //x=[number]:12 //test=[function]:function(x){ //testに処理を割り当て。 this.x += x+2; } alert(this); //表示:[object Object] alert(this.x); //表示:0 alert(this.test); //表示:function(x){ //testに処理を割り当て。 // this.x += x+2; //} } F.prototype=Object.create(C.prototype); //Cから継承。 R=new F(); R.test(10); D=R.x; //=[number]:12