は、私たちは新しいオブジェクトを作成してみましょう、そしてそのプロトタイプを変更します。初期プロトタイプずにオブジェクトに__proto__設定
var obj = new Object;
obj.__proto__ = new Date;
obj.setTime // is a function
我々はobj
は今、その新しいプロトタイプ、new Date
からプロパティを継承していることがわかります。
その後、我々はプロトタイプせずに新しいオブジェクトを作成し、そのプロトタイプを変更します。私たちは、チェーンが機能しないプロトタイプことがわかり
var obj = Object.create(null);
obj.__proto__ = new Date;
obj.setTime // undefined
を - obj
はその__proto__
があるにもかかわらず、new Date
からプロパティを継承しませんでしたnew Date
。
なぜですか?
(私はObject
は確か__proto__
プロパティのセッターでのいくつかの内部のロジックを持っていますが、いないからだと思います)
プロトタイプとして 'null'なのでを使用してオブジェクトを作成する場合、全ての被写体のためのプロトタイプチェーンがありませんので、' _proto__'セットが存在しないであろう。手動で '__proto__'を設定すると、それはオブジェクトの普通のプロパティになります。 ( 'obj .__ proto __。setTime' - > function) – Teemu