Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptのObject.freeze()を使用して、ネストされたオブジェクトを不変にすることは可能ですか?


Object.freeze() メソッドはオブジェクトを不変にすることができます ただし、ネストされたオブジェクトの場合 、可変性を防ぐことはできません 。 Object.freeze() 不変性のみを提供できます 外側の親オブジェクトに対しては、内側の子(ネストされた)オブジェクトにアクセスできません。

次の例では、ネストされたオブジェクトはありません。 Object.freeze() メソッドはフリーズを試みます オブジェクト全体。したがって、オブジェクトをフリーズした後でも、プロパティ「name」に変更はありません。

<html>
<body>
   <script>
      const person = {
         "name" : "Suresh",
         "Country" : "India",
         "Designation" : "Mayor"
      }
      document.write("Before freeze the name is" +" "+ person.name );
      document.write("</br>");
      Object.freeze(person);
      person.name = "John";
      document.write("After freeze the name is" +" "+ person.name);
   </script>
</body>
</html>

出力

Before freeze the name is Suresh
After freeze the name is Suresh

ネストされたオブジェクトがフリーズしようとしたとき Object.freeze()による Object.freeze()のため、結果は無駄になります ネストされたオブジェクトにアクセスできません。

次の例では、オブジェクトが凍結されていても Object.freeze() メソッドネストされたオブジェクトのプロパティが変更されます。

<html>
<body>
<script>
   const person = {
      "name" : "Suresh",
      "Country" : "India",
      "Designation" : "Mayor",
      "CompaniesOwned" :{
         "Company1" : "Tesla",
         "Company2" : "SolarCity",
         "Company3" : "Spacex"
      }
   }
   document.write("Before freeze " + " " + "Company2 is" + " "+ person.CompaniesOwned.Company2);
   Object.freeze(person);
   document.write("</br>");
   person.CompaniesOwned.Company2 = "Neuralica";
   document.write("After freeze" + " " + "Company2 is" + " "+ person.CompaniesOwned.Company2);
</script>
</body>
</html>

出力

Before freeze Company2 is SolarCity
After freeze Company2 is Neuralica

  1. JavaScriptを使用してURLオブジェクトを作成するにはどうすればよいですか?

    以下は、JavaScriptを使用してURLオブジェクトを作成するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style&g

  2. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st