JavaScript オブジェクト 新しいページはコチラ
提供: yonewiki
(→.create 関数) |
(→.create 関数) |
||
807行: | 807行: | ||
== .create 関数 == | == .create 関数 == | ||
*objNew1 = Object.create(Object.prototype,objSource1); | *objNew1 = Object.create(Object.prototype,objSource1); | ||
− | : | + | :上記のようにしてオブジェクトを作成できます。第一引数には作成するオブジェクトのプロトタイプを指定できます。上記の例であれば、何も値を保持しないObjectというオブジェクトが持っている構造をもとにしたプロパティ値やメソッドおよび関数を保持した構造に付け加えて、2番目の引数で指定するのは'''プロパティ記述子というオブジェクトを保持したプロパティ値を持ったオブジェクト(オブジェクト初期化子で定義するプロパティ)です。プロパティ記述子とは、プロパティの属性を指定するもので、具体的にはサンプルのような形式のものです。'''引数で指定したプロパティ記述子を反映した第一引数のオブジェクトを生成するのがこの関数の役割でobjNew1として生成されます。第一引数にnullを指定すると、プロトタイプ値は保持されません。Objectのプロトタイプも保持されません。第二引数を省略することは可能です。 |
814行: | 814行: | ||
サンプル | サンプル | ||
<syntaxhighlight lang="javascript" line start="1"> | <syntaxhighlight lang="javascript" line start="1"> | ||
+ | <HTML> | ||
+ | <HEAD> | ||
+ | <TITLE>JavaScript create</TITLE> | ||
+ | </HEAD> | ||
+ | <BODY> | ||
+ | JavaScript create<br /> | ||
+ | <SCRIPT Language="JavaScript"> | ||
+ | <!-- | ||
+ | var obj = {}; | ||
+ | var objCreate = Object.create(null, {x:{value:"create_x" ,writable:true}}); | ||
+ | var objCreate2 = Object.create(Object.prototype,{x:{value:"create2_x",writable:true}}); | ||
+ | var objCreate3 = Object.create(Object.getPrototypeOf(obj), {x:{value:"create3_x",writable:true}}); | ||
+ | obj.newDataProperty = "obj_newDataProperty"; | ||
+ | |||
+ | var descriptor = Object.getOwnPropertyDescriptor(obj, "newDataProperty"); | ||
+ | |||
+ | |||
+ | descriptor.writable = false; | ||
+ | Object.defineProperty(obj, "newDataProperty", descriptor); | ||
+ | |||
+ | |||
+ | var desc = Object.getOwnPropertyDescriptor(obj, "newDataProperty"); | ||
+ | var desc1 = Object.getOwnPropertyDescriptor(objCreate, "x"); | ||
+ | var desc2 = Object.getOwnPropertyDescriptor(objCreate2, "x"); | ||
+ | var desc3 = Object.getOwnPropertyDescriptor(objCreate3, "x"); | ||
+ | |||
+ | |||
+ | document.write("■obj.newDataPropertyのプロパティ記述子の出力<br />"); | ||
+ | for (var prop in desc) { | ||
+ | document.write(prop + ': ' + desc[prop]); | ||
+ | document.write("<br />"); | ||
+ | } | ||
+ | |||
+ | document.write("■objCreate.xのプロパティ記述子の出力<br />"); | ||
+ | for (var prop in desc1) { | ||
+ | document.write(prop + ': ' + desc1[prop]); | ||
+ | document.write("<br />"); | ||
+ | } | ||
+ | |||
+ | document.write("■objCreate2.xのプロパティ記述子の出力<br />"); | ||
+ | for (var prop in desc2) { | ||
+ | document.write(prop + ': ' + desc2[prop]); | ||
+ | document.write("<br />"); | ||
+ | } | ||
+ | |||
+ | document.write("■objCreate3.xのプロパティ記述子の出力<br />"); | ||
+ | for (var prop in desc3) { | ||
+ | document.write(prop + ': ' + desc3[prop]); | ||
+ | document.write("<br />"); | ||
+ | } | ||
+ | --> | ||
+ | </SCRIPT> | ||
+ | </BODY> | ||
+ | </HTML> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Media:JavaScript Object create.html|実行結果サンプル]] | [[Media:JavaScript Object create.html|実行結果サンプル]] |