Свойство constructor
У каждой функции по умолчанию уже есть свойствоprototype
.
Оно содержит объект такого вида:
function Rabbit() {}
Rabbit.prototype = {
constructor: Rabbit
};
В коде выше я создалRabbit.prototype
вручную, но ровно такой же – генерируется автоматически.
Проверим:
function Rabbit() {}
// в Rabbit.prototype есть одно свойство: constructor
alert( Object.getOwnPropertyNames(Rabbit.prototype) ); // constructor
// оно равно Rabbit
alert( Rabbit.prototype.constructor == Rabbit ); // true
Можно его использовать для создания объекта с тем же конструктором, что и данный:
function Rabbit(name) {
this.name = name;
alert( name );
}
var rabbit = new Rabbit("Кроль");
var rabbit2 = new rabbit.constructor("Крольчиха");
Эта возможность бывает полезна, когда, получив объект, мы не знаем в точности, какой у него был конструктор (например, сделан вне нашего кода), а нужно создать такой же.