[JavaScript]オブジェクトを一定のままにします.freeze()
7799 ワード
Object.freeze
How to Use
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42
Other examples
var o1 = {
name: 'kim',
score: [1, 2]
}
o1.name = 'lee';
console.log(o1);
var o1 = {
name: 'kim',
score: [1, 2]
}
Object.freeze(o1);
o1.name = 'lee';
console.log(o1);
金が変わらない
Notice!
o1.city = 'seoul';
→エラーo1.score.push(3);
→pushでいいです.このオブジェクトは別の場所に格納されるため、PropertyはRapperのみを格納します.もしそうなら、対象も凍らせるべきです.Object.freeze(o1.score);
→上記のコマンドを実行するとエラーが発生します.その相手まで凍ってしまったからだ.C:\Users\yuri\Desktop\TEST\freeze-study\freeze-study.js:9
o1.score.push(3);
^
TypeError: Cannot add property 2, object is not extensible
at Array.push (<anonymous>)
at Object.<anonymous> (C:\Users\yuri\Desktop\TEST\freeze-study\freeze-study.js:9:10)
object.freezeとconstの違い
const o1 = {
name: 'kim'
}
Object.freeze(o1);
const o2 = {
name: 'lee'
}
o1 = o2;
PS C:\Users\yuri\Desktop\TEST\freeze-study> node .\freez_const.js
C:\Users\yuri\Desktop\TEST\freeze-study\freez_const.js:8
o1 = o2;
^
TypeError: Assignment to constant variable.
at Object.<anonymous> (C:\Users\yuri\Desktop\TEST\freeze-study\freez_const.js:8:4)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
→上記のコードを実行中に次のエラーが発生します.constによるエラー.キーワード変数がconstではなくvarの場合、問題は発生しません.https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
https://opentutorials.org/module/4075/24884
Reference
この問題について([JavaScript]オブジェクトを一定のままにします.freeze()), 我々は、より多くの情報をここで見つけました https://velog.io/@leyuri/JavaScript-객체를-불변하게-만드는-Object.freezeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol