JavaScriptのprototype

[code]

    function person(name){
      this.name = name;
      this.prof = function(){
        console.log("name : " + this.name + "\nage : " + this.age + "\ncolor : "+ this.color + "\nweight : " + this.weight);
      }
    }
    person.prototype.color = "red";
    person.prototype.age = "18";
    
    var man = new person("Jackbow");
    man.weight = 50;
    man.prof();
    
[/code]

* * *

この `man.weight = 50;` を

[code]

    man = {
      weight : 50
    };
    
[/code]

にしてはいけないのはなぜですか？



[code]

    {
      weight : 50
    }
    
[/code]

この文で `weight` プロパティだけを持ったオブジェクトを作っています。このオブジェクトは `man` とも `person`
とも無関係です。ですから、

[code]

    man = {
      weight : 50
    };
    
[/code]

と書いてしまうと、その新しいオブジェクトで `man` の中身を丸ごと置き換えてしまいます。

[code]

    man.weight = 50;
    
[/code]

と書いた場合は `weight` プロパティだけが変更されるため、他のプロパティや、プロトタイプチェインに影響を与えることはありません。

