#javascript #prototype
#javascript #прототип
Вопрос:
У меня есть 3 вопроса о следующем коде, который я нашел в учебнике по JavaScript под названием «JavaScript: хорошие части».
Здесь говорится, что когда мы создаем новый объект, мы можем выбрать объект, который должен быть его прототипом.
Часть 1: допустим, у нас есть следующий объект
var person = {
first_name: "Tim",
last_name: "Thompson",
middel_name: "Jack",
nick_name: "GoldTeeth",
age:30
};
Часть 2. затем мы собираемся добавить функцию Create к объекту, используя следующий код
Object.create = function(o){
var F = function(){};
F.prototype = o;
return new F();
}
и затем позже мы можем сопоставить прототип любого нового объекта с «person», используя Object.create()
функцию
часть 3: пример//
var another_person = Object.create(person);
alert(another_person.first_name); //Tim
- почему в теле функции create почему мы присваиваем F функции
- и в конце возвращает новый F()
- почему в части 3 мы назначаем another_person функции
Я понимаю, что в JavaScript функции являются object, но я не могу следовать логике. Кто-нибудь может мне помочь?
Комментарии:
1. «мы присваиваем F функции » Нет, мы присваиваем функцию
F
. «мы присваиваем another_person функции » Нет, мы присваиваем результатObject.create
another_person
, который является объектом.new F
создает объект. Я думаю, вам следует ознакомиться сnew
ключевым словом и с тем, как оно работает вместе сprototype
свойством функции: developer.mozilla.org/en-US/docs/Web/JavaScript /… , developer.mozilla.org/en-US/docs/Web/JavaScript/Guide /…
Ответ №1:
Когда у вас есть код, подобный этому:
var foo = bar;
тогда вызванная ваша переменная foo
получит значение bar
. Таким образом, он bar
назначен foo
, не foo
назначен bar
, поэтому у вас есть некоторые неправильные представления в вашем вопросе.
Что касается опубликованного кода. Первая часть создает объект и присваивает его person
. Вторая часть присваивает функцию Object.create
. Функция создает новую пустую функцию и присваивает ее F
. Когда это сделано, вызываемый параметр o
присваивается F
‘s prototype
. Поскольку F
имеет prototype
, его можно создать, и будет возвращен новый экземпляр F
. Третья часть — это тестовый код. Он принимает, person
и с помощью Object.create
создает экземпляр нового person
.