2011年11月11日に投稿

[Javascript] prototype のプロパティに値を上書きするのと prototype にオブジェクトリテラルを上書きするのでは動作が異なる

あるオブジェクトのプロパティを上書きするときに、ドット演算子を使って上書きする方法とオブジェクトリテラルで上書きする方法では同様の結果が得られます。ですがprototypeの場合は訳が違うようです。具体的な例を示します。

オブジェクトリテラルとオブジェクトのプロパティの関係

下記の結果からオブジェクトリテラルによる上書きと、オブジェクトのプロパティへの上書きについては同じ動作をするものと思い込んでいました。

オブジェクトリテラルで定義したあとにプロパティに上書きをする

プロパティで定義したあとにオブジェクトリテラルで上書きする

prototype で同じ事をやってみると結果に違いが現れます。継承が絡んでくると変わってくるようです。

prototypeにオブジェクトリテラルを上書きした場合

prototype のプロパティに上書きした場合

「prototypeにオブジェクトリテラルを上書きした場合」は継承関係が絶たれる

prototypeにオブジェクトリテラルで上書きすると継承関係が絶たれるようです。そう判断したのは下記の結果からです。

関連記事

Leave a Reply