JavaScript オブジェクト 新しいページはコチラ
提供: yonewiki
(→.freeze 関数) |
(→.isFrozen 関数) |
||
| 1,484行: | 1,484行: | ||
== .isFrozen 関数 == | == .isFrozen 関数 == | ||
| − | * | + | *Object.isFrozen(obj000) |
| − | : | + | :上記のようにするとobj000がFreeze状態かを調べることができて、Freeze状態と同等ならtrueとなります。具体的には3つのチェックがなされます。 |
| + | #拡張不能状態になっているか? | ||
| + | #writeble値はfalseか? | ||
| + | #configuratable値はfalseか? | ||
| + | :3つ全てが成り立っていればtrueとなります。そのことがわかるようなサンプルが以下のようなものになります。 | ||
サンプル | サンプル | ||
<syntaxhighlight lang="javascript" line start="1"> | <syntaxhighlight lang="javascript" line start="1"> | ||
| + | <HTML> | ||
| + | <HEAD> | ||
| + | <TITLE>JavaScript isFrozen</TITLE> | ||
| + | </HEAD> | ||
| + | <BODY> | ||
| + | JavaScript isFrozen<br /> | ||
| + | <SCRIPT Language="JavaScript"> | ||
| + | <!-- | ||
| + | var obj000 = { | ||
| + | x000:{ | ||
| + | value:"data000", | ||
| + | } | ||
| + | }; | ||
| + | var obj001 = { | ||
| + | x001:{ | ||
| + | value:"data001", | ||
| + | } | ||
| + | }; | ||
| + | var obj010 = { | ||
| + | x010:{ | ||
| + | value:"data010", | ||
| + | } | ||
| + | }; | ||
| + | var obj011 = { | ||
| + | x011:{ | ||
| + | value:"data011", | ||
| + | } | ||
| + | }; | ||
| + | var obj100 = { | ||
| + | x100:{ | ||
| + | value:"data100", | ||
| + | } | ||
| + | }; | ||
| + | var obj101 = { | ||
| + | x101:{ | ||
| + | value:"data101", | ||
| + | } | ||
| + | }; | ||
| + | var obj110 = { | ||
| + | x110:{ | ||
| + | value:"data110", | ||
| + | } | ||
| + | }; | ||
| + | var obj111 = { | ||
| + | x111:{ | ||
| + | value:"data111", | ||
| + | } | ||
| + | }; | ||
| + | Object.defineProperty(obj000, "x000", { | ||
| + | value: "data000", | ||
| + | writable: false, | ||
| + | enumerable: false, | ||
| + | configurable: false | ||
| + | }); | ||
| + | Object.defineProperty(obj001, "x001", { | ||
| + | value: "data001", | ||
| + | writable: false, | ||
| + | enumerable: false, | ||
| + | configurable: true | ||
| + | }); | ||
| + | Object.defineProperty(obj010, "x010", { | ||
| + | value: "data010", | ||
| + | writable: false, | ||
| + | enumerable: true, | ||
| + | configurable: false | ||
| + | }); | ||
| + | Object.defineProperty(obj011, "x011", { | ||
| + | value: "data011", | ||
| + | writable: false, | ||
| + | enumerable: true, | ||
| + | configurable: true | ||
| + | }); | ||
| + | Object.defineProperty(obj100, "x100", { | ||
| + | value: "data100", | ||
| + | writable: true, | ||
| + | enumerable: false, | ||
| + | configurable: false | ||
| + | }); | ||
| + | Object.defineProperty(obj101, "x101", { | ||
| + | value: "data101", | ||
| + | writable: true, | ||
| + | enumerable: false, | ||
| + | configurable: true | ||
| + | }); | ||
| + | Object.defineProperty(obj110, "x110", { | ||
| + | value: "data110", | ||
| + | writable: true, | ||
| + | enumerable: true, | ||
| + | configurable: false | ||
| + | }); | ||
| + | Object.defineProperty(obj111, "x111", { | ||
| + | value: "data111", | ||
| + | writable: true, | ||
| + | enumerable: true, | ||
| + | configurable: true | ||
| + | }); | ||
| + | function objFunc(){ | ||
| + | this.nValue1 = 100; | ||
| + | this.nValue2 = 200; | ||
| + | } | ||
| + | document.write("■isFrozen<BR />"); | ||
| + | document.write("obj000 = ", Object.isFrozen(obj000), "<BR />"); | ||
| + | document.write("obj001 = ", Object.isFrozen(obj001), "<BR />"); | ||
| + | document.write("obj010 = ", Object.isFrozen(obj010), "<BR />"); | ||
| + | document.write("obj011 = ", Object.isFrozen(obj011), "<BR />"); | ||
| + | document.write("obj100 = ", Object.isFrozen(obj100), "<BR />"); | ||
| + | document.write("obj101 = ", Object.isFrozen(obj101), "<BR />"); | ||
| + | document.write("obj110 = ", Object.isFrozen(obj110), "<BR />"); | ||
| + | document.write("obj111 = ", Object.isFrozen(obj111), "<BR />"); | ||
| + | |||
| + | Object.preventExtensions(obj000); | ||
| + | Object.preventExtensions(obj001); | ||
| + | Object.preventExtensions(obj010); | ||
| + | Object.preventExtensions(obj011); | ||
| + | Object.preventExtensions(obj100); | ||
| + | Object.preventExtensions(obj101); | ||
| + | Object.preventExtensions(obj110); | ||
| + | Object.preventExtensions(obj111); | ||
| + | |||
| + | |||
| + | document.write("■オブジェクト拡張不能化後のisFrozen<BR />"); | ||
| + | document.write("obj000 = ", Object.isFrozen(obj000), "<BR />"); | ||
| + | document.write("obj001 = ", Object.isFrozen(obj001), "<BR />"); | ||
| + | document.write("obj010 = ", Object.isFrozen(obj010), "<BR />"); | ||
| + | document.write("obj011 = ", Object.isFrozen(obj011), "<BR />"); | ||
| + | document.write("obj100 = ", Object.isFrozen(obj100), "<BR />"); | ||
| + | document.write("obj101 = ", Object.isFrozen(obj101), "<BR />"); | ||
| + | document.write("obj110 = ", Object.isFrozen(obj110), "<BR />"); | ||
| + | document.write("obj111 = ", Object.isFrozen(obj111), "<BR />"); | ||
| + | |||
| + | Object.freeze(obj111); | ||
| + | |||
| + | //オブジェクトの拡張 フリーズしているため無効 | ||
| + | obj111.property1 = 100; | ||
| + | |||
| + | var propertydescriptor = Object.getOwnPropertyDescriptor(obj111, "x111"); | ||
| + | |||
| + | document.write("■obj111のデータ記述子<BR />"); | ||
| + | for(var property in propertydescriptor){ | ||
| + | document.write("property = ", property, ", propertydescriptor[", property ,"] = ", propertydescriptor[property], "<BR />"); | ||
| + | } | ||
| + | document.write("■obj000の保持値<BR />"); | ||
| + | document.write("obj000.value = ", obj000.x000, "<BR />"); | ||
| + | |||
| + | |||
| + | |||
| + | delete obj000.x000; | ||
| + | |||
| + | document.write("■deleteキーワード使用後、obj000の保持値<BR />"); | ||
| + | document.write("obj000.value = ", obj000.x000, "<BR />"); | ||
| + | |||
| + | var propertydescriptor000 = Object.getOwnPropertyDescriptor(obj000, "x000"); | ||
| + | |||
| + | document.write("■deleteキーワード使用後、obj000のデータ記述子<BR />"); | ||
| + | for(var property in propertydescriptor000){ | ||
| + | document.write("property000 = ", property, ", propertydescriptor000[", property ,"] = ", propertydescriptor000[property], "<BR />"); | ||
| + | } | ||
| + | |||
| + | --> | ||
| + | </SCRIPT> | ||
| + | </BODY> | ||
| + | </HTML> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Media:JavaScript Object isFrozen.html|実行結果サンプル]] | [[Media:JavaScript Object isFrozen.html|実行結果サンプル]] | ||
| − | |||
== .preventExtensions 関数 == | == .preventExtensions 関数 == | ||