1. コードの 3 行目が理解できません。
3 行目を実装する必要があり、プロトタイプ オブジェクトとして data
を super_robot
に追加します。
なぜ SuperRobot.__proto__=data;
ではなく、 say.__proto__=data;
??
2.
我想大声告诉你2017-05-18 11:00:53
このように書くことは、super_robot のプロトタイプチェーンを書き換えることに相当し、本来は super_robot.__proto__ が Function.prototype を指していたと言えます。書き換えると、super_robot は実際の関数とみなされなくなり、call、apply、bind などの Function プロトタイプのメソッドを使用できなくなります。 リーリー
これを拡張する場合は、say.__proto__.name = name、say.__proto__.age = age と書く必要があります。これは Function.prototype.name = name、Function.prototype.age = age と同等ですが、これによりすべてが作成されます。関数インスタンスは 2 つの属性にアクセスできるため、通常はこのように展開することはお勧めできません