Last active
September 22, 2020 20:52
-
-
Save pajaydev/f28b06c0486f8388c24c36c1861b080a to your computer and use it in GitHub Desktop.
Revisions
-
pajaydev revised this gist
Sep 22, 2020 . 1 changed file with 7 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,13 +1,14 @@ # Object.seal vs Object.freeze vs Object.preventExtensions() ## Object.seal() ```javascript /** * The Object.seal() method seals an object: that is, prevents new properties to be getting added and making all existing properties * non-configurable. * * @Reference: * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal */ const language = { name: 'JavaScript', author: 'Brendan Eich' @@ -25,14 +26,15 @@ console.log(language); //{"name":"Java","author":"Brendan Eich"} ``` ## Object.preventExtensions() ```javascript /** * Object.preventExtensions() prevents new properties being getting added. We can modify or delete the properties. * * @Reference: * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensionsl * */ const language = { name: 'JavaScript', author: 'Brendan Eich' @@ -50,9 +52,8 @@ language.name = "Java"; // allowed console.log(language); //{"name":"Java"} ``` ## Object.freeze() ```javascript /** * Object.freeze() freezes the object, that means it prevents new properties from being added, prevents existing properties getting removed, or existing properties to get changed ot their enumerability, configurability or writability getting changed. * @@ -62,7 +63,7 @@ console.log(language); //{"name":"Java"} * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze * */ Object.freeze(language); // adding property @@ -78,7 +79,7 @@ console.log(language); //{"name":"JavaScript","author":"Brendan Eich"} ## Comparison | Operations | Object.seal | Object.preventExtensions | Object.freeze | --- | --- | --- | --- | | Adding | :x: | :x: | :x: | | deleting | :x: | :white_check_mark: | :x: | | modifying | :white_check_mark: | :white_check_mark: | :x: | -
pajaydev created this gist
Sep 22, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,87 @@ # Object.seal vs Object.freeze vs Object.preventExtensions() ## Object.seal() /** * The Object.seal() method seals an object: that is, prevents new properties to be getting added and making all existing properties * non-configurable. * * @Reference: * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal */ ```javascript const language = { name: 'JavaScript', author: 'Brendan Eich' }; Object.seal(language) // adding property language['createdAt'] = "Netscape"; // not allowed // deleting property delete language.name; // not allowed // changing property language.name = "Java"; // allowed console.log(language); //{"name":"Java","author":"Brendan Eich"} ``` ## Object.preventExtensions() /** * Object.preventExtensions() prevents new properties being getting added. We can modify or delete the properties. * * @Reference: * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensionsl * */ ```javascript const language = { name: 'JavaScript', author: 'Brendan Eich' }; Object.preventExtensions(language); // adding property language['createdAt'] = "Netscape"; // not allowed // deleting property delete language.author; // allowed // changing property language.name = "Java"; // allowed console.log(language); //{"name":"Java"} ``` ## Object.freeze() /** * Object.freeze() freezes the object, that means it prevents new properties from being added, prevents existing properties getting removed, or existing properties to get changed ot their enumerability, configurability or writability getting changed. * * it freezes SHALLOW, nested objects is not frozen here * * @Reference: * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze * */ ```javascript Object.freeze(language); // adding property language['createdAt'] = "Netscape"; // not allowed // deleting property delete language.author; // not allowed // changing property language.name = "Java"; //not allowed console.log(language); //{"name":"JavaScript","author":"Brendan Eich"} ``` ## Comparison | Operations | Object.seal | Object.preventExtensions | Object.freeze | --- | --- | --- | --- | --- | | Adding | :x: | :x: | :x: | | deleting | :x: | :white_check_mark: | :x: | | modifying | :white_check_mark: | :white_check_mark: | :x: |