function Rabbit() { }
var rabbit = new Rabbit();
alert( rabbit.constructor == Rabbit ); // true
Таким образом, мы можем использовать свойство constructor, чтобы получить функцию-конструктор объекта, но при смене прототипа нужно смотреть, чтобы ненароком не перезаписать его.
function Rabbit(name) {
this.name = name;
}
var rabbit = new Rabbit('Nick');
var cat = new rabbit.constructor('Ann');
alert(cat.name); // Ann
Вот такой вид имеет прототип по умолчанию:
function Rabbit () {}
Rabbit.prototype = {
constructor: Rabbit
}
При переопределении прототипа свойство constructor может из него пропасть.
function Rabbit() { }
Rabbit.prototype = {}; // Теперь свойство constructor пропало!!!
var rabbit = new Rabbit();
alert( rabbit.constructor == Object ); // Теперь свойство constructor ссылается на Object, а не Rabbit, так как у Rabbit свойство constructor пропало после переопределения prototype!!!
Комментариев нет:
Отправить комментарий