JavaScript オブジェクト 新しいページはコチラ
提供: yonewiki
(→.create 関数) |
(→.defineProperties 関数) |
||
894行: | 894行: | ||
== .defineProperties 関数 == | == .defineProperties 関数 == | ||
− | * | + | *Object.defineProperties(objCreate1,{data_x:{value:"x_value",writable:true}}); |
− | : | + | :と上記のように1つめの引数にはオブジェクト記述子とプロパティ記述子を定義したいオブジェクトを記載します。2つめの引数にはオブジェクト記述子とプロパティ記述子の構造を持つオブジェクトを記載します。 |
サンプル | サンプル | ||
<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.defineProperties(obj, { | ||
+ | data_x:{//オブジェクト記述子 | ||
+ | //プロパティ記述子 データプロパティ部 | ||
+ | enumerable:true, | ||
+ | configurable:true, | ||
+ | set: function (setValue){//アクセサプロパティ部 | ||
+ | this.new_xValue = setValue; | ||
+ | }, | ||
+ | get: function (){ | ||
+ | return this.new_xValue; | ||
+ | } | ||
+ | }, | ||
+ | data_y:{//オブジェクト記述子 | ||
+ | //プロパティ記述子 データプロパティ部 | ||
+ | enumerable:true, | ||
+ | configurable:true, | ||
+ | set: function (setValue){//アクセサプロパティ部 | ||
+ | this.new_yValue = setValue; | ||
+ | }, | ||
+ | get: function (){ | ||
+ | return this.new_yValue; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | var descriptor2 = Object.getOwnPropertyDescriptor(obj, "data_x"); | ||
+ | descriptor2.set(-7100); | ||
+ | |||
+ | var descriptor3 = Object.getOwnPropertyDescriptor(obj, "data_y"); | ||
+ | descriptor3.set(5500); | ||
+ | |||
+ | var desc = Object.getOwnPropertyDescriptor(obj, "newDataProperty"); | ||
+ | var desc_x = Object.getOwnPropertyDescriptor(obj, "data_x"); | ||
+ | var desc_y = Object.getOwnPropertyDescriptor(obj, "data_y"); | ||
+ | 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("■obj.data_xのプロパティ記述子の出力<br />"); | ||
+ | for (var prop in desc_x) { | ||
+ | document.write(prop + ': ' + desc_x[prop]); | ||
+ | document.write("<br />"); | ||
+ | } | ||
+ | document.write("desctipter accesa get = ", descriptor2.get(), "<br />"); | ||
+ | document.write("■obj.data_yのプロパティ記述子の出力<br />"); | ||
+ | for (var prop in desc_y) { | ||
+ | document.write(prop + ': ' + desc_y[prop]); | ||
+ | document.write("<br />"); | ||
+ | } | ||
+ | document.write("desctipter accesa get = ", descriptor3.get(), "<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 defineProperties.html|実行結果サンプル]] | [[Media:JavaScript Object defineProperties.html|実行結果サンプル]] | ||
− | |||
== .defineProperty 関数 == | == .defineProperty 関数 == |