値型と参照型の補足

値型と参照型の記事の補足記事です。

Object.assign()でコピーしたオブジェクトは、列挙不可のプロパティはコピーしないと書きました。
ではコピー元オブジェクトのプロトタイプチェーン上に存在するメソッドを使用したい場合はどうすればよいのでしょうか
僕がぱっと思いついたのはこんな感じのコードです。

var copy_party = Object.assign({}, $gameParty);
copy_party._steps = 10000;
copy_party.__proto__ = $gameParty.__proto__;
console.log(copy_party.steps());

__proto__を使って、プロトタイプチェーンを追加してしまうのですね。
が、__proto__は全ての環境で使えるとは限らないらしいです(少なくともツクールMVのPC版では動きました)。
あと、個人的な話ですが、__proto__で繋げたり切ったりしてるコードは読みにくい気がしますw

以上の点を理解した上で、どうしても__proto__を使わざるを得ない場合にだけ使っていきたいですね。

注*もっといい方法があるかもしれません。教えてください。

フォローする