2013-04-10 3 views
0

дано JavaScript функциюКак правильно назвать «f.prototype»?

var f = function(); 

, насколько я понимаю, я бы назвал Object.getProtoypeOf(f) "прототип F в".

Что такое правильный термин для f.prototype?

«Объекты, построенные прототипы с е как конструктор получит» звучит немного многословным;)

+0

Что случилось с прототипом f? – Andrew

+0

Существует разница между теми, которые можно проверить с помощью 'f.prototype! = Object.getPrototypeOf (f)'. 'f.prototype' - это объекты Prototype, созданные с помощью' new f() 'get, но это не protoype f – keppla

+0

Взгляните на [documentation] (https://developer.mozilla.org/en-US/docs/JavaScript/Справочник/Global_Objects/Объект/getPrototypeOf). 'f .__ proto__ === Object.getPrototypeOf (f)'. Кстати, вы пытаетесь что-то сделать с 'prototype' или просто интересно о них? –

ответ

0

Проверьте это здесь: http://jsfiddle.net/UCmW8/

var Person = function(name) { 
    this.name = name; 
} 

Person.prototype.sayHi = function() { 
    alert(this.name + ' says hi!'); 
}; 

var matt = new Person('Matt'); 
matt.sayHi() // alerts 'Matt says hi!' 

console.log('matt.prototype',    matt.prototype); 
console.log('Object.getPrototypeOf(matt)', Object.getPrototypeOf(matt)); 
console.log('Person.prototype',    Person.prototype); 
console.log('Object.getPrototypeOf(Person)', Object.getPrototypeOf(Person)); 

Что это производит?

prototypes output

Первый matt.prototype является undefined. Функции имеют объект-прототип, и когда эта функция используется как конструктор, экземпляры получают возможность использовать ее свойства, но экземпляры не имеют собственного свойства prototype.

Object.getPrototypeOf(matt) находит настоящий прототип. И, как вы можете видеть, это то же самое, что и Person.prototype. Он позволяет получить прототип без ссылки на функцию построения.

Наконец, если мы попробуем Object.getPrototypeOf(Person), мы получим что-то странное. Наша конструкторская функция, в конце концов, является функцией. Подумайте о функциях, которые вы создаете в качестве экземпляров некоторого конструктора Function, с его собственным прототипом. Таким образом, вы выбираете объект-прототип всех функций, когда вы это делаете.

+0

Ваше сообщение является точным, но не отвечает на мой вопрос. Мне не интересно, какая разница между прототипом f.prototype и прототипом f. Я искал правильные Условия, чтобы обсудить их. – keppla

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