2016-07-27 3 views
0

создать один объект, используя метод Object.create, поэтому Object.create ожидает protoptype объекта в качестве первого параметра и свойства decriptors является вторым параметром.какова разница между obj.prototype и Object.getPrototypeOf (OBJ)

var obj = Object.create({a:2},{b:{value:3}}) 

так, {a:2} является прототипом OBJ. но если я ищу прототип как obj.prototype возвращается undefined, но если я проверки с использованием Object.getPrototypeOf(obj) возвращения {a:2}

Можете ли вы сказать мне, что случилось здесь? Итак, каков первый параметр в Object.create?

Благодаря

+0

Синтаксис: 'Object.create (proto [, propertiesObject])' https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create –

+0

У простых объектов нет прототипа 'prototype'. Не путайте себя с 'functionReference.prototype' –

+0

' Object.getPrototypeOf (obj) == obj .__ proto__' Но использование '__proto__' не рекомендуется. –

ответ

1

Вы нашли одну вещь Вейрдест о языке JavaScript: в prototype собственности. В JavaScript объекты наследуют свойства от родителя через цепочку прототипов.

Но JavaScript работает так, что свойство объекта prototype не является прототипом этого объекта - это значение, которое используется в качестве прототипа для других объектов, созданных на нем, с использованием new. Таким образом, Car.prototype - это значение, которое должно быть прототипом создания нового экземпляра с new Car().

Что такое прототип объекта в смысле прототипного наследования, это то, что вы можете получить с помощью Object.getPrototypeOf(). Вы можете узнать больше об этом, например, в Understanding the prototype property in JavaScript

Смежные вопросы