Я просто читаю о прототипах в JavaScript и Douglas Crockford предлагает и отличный способ выбрать прототип новых объектов, но может ли кто-нибудь объяснить (ниже), почему тип obj01 равен «объекту», когда я передаю его в функцию, поскольку это опытный образец?Javascript Prototyping Question
if (typeof Object.beget !== 'function') {
Object.beget = function (o) {
console.log(typeof o);//function
var F = function() {};
F.prototype = o;
console.log(typeof F);//function
return new F();
};
}
var func01 = function(){};
var obj01 = Object.beget(func01);
console.log(typeof obj01);//object
console.log(typeof obj01.prototype);//object
Я думал, что это будет
console.log(typeof obj01);//function
console.log(typeof obj01.prototype);//function
Привет CMS, это было не то, что я пытался создать функцию. Я пытался понять наследование и прототипирование в JavaScript. Итак, если прототип моего нового объекта теперь является Function.prototype, почему мой новый объект не может быть вызван? Являются ли методы вызова и применения не частью прототипа функции, которую наследует мой новый объект? – screenm0nkey
@Nick: Отредактировано для уточнения, пожалуйста, спросите, есть ли у вас какие-либо сомнения. – CMS
Спасибо CMS. Это был очень тщательный ответ. Я действительно ценю твою помощь. У меня есть еще один вопрос. Когда вы говорите о цепочке прототипов объекта, это хранится в скрытом свойстве внутреннего прототипа? Я знаю, что функции имеют два свойства прототипа, один скрыт, а другой нет. – screenm0nkey