Что такое prototype?
prototype = {}
prototype - это объект, из которого другой объект наследует свойства и методы.
Объект может быть прототипом другого объекта.
Каждый объект в JavaScript имеет свой prototype объект.
На верхушке цепочки прототипов стоит объект object.
Любой объект в JavaScript - это просто хэш массив, состоящий из ключей и значений.
Каждой функции в JavaScript присвоен свой prototype. То есть, всё, что не функция не может иметь свойство prototype.
function A () {}
var B = {};
alert(A.prototype); // '[object Object]'
alert(B.prototype); // 'undefined'
Если функция является конструктором объектов, то при вызове её с помощью оператора new, полученный объект унаследует присвоенные значения от prototype.
Но будьте внимательны изменяя прототип функции после создания объекта.
Вариант 1.
var A = function(name) {
this.name = name;
}
var a = new A('alpha');
a.name; //'alpha'
A.prototype.x = 23;
a.x; //23
Вариант 2.
var A = function(name) {
this.name = name;
}
var a = new A('alpha');
a.name; //'alpha'
A.prototype = {x:23};
a.x; // 'undefined'
Можно проверить является ли объект a экземпляром, созданным функцией конструктором A().
var A = function(){}
var a = new A();
console.log(a instanceof A);
Все созданные объекты функцией конструктором наследуют значения её prototype.
Если значение prototype изменится, то это повлияет на все объекты сразу, потому что значение prototype хранится не в создаваемых объектах, а в самой функции конструкторе.
Комментариев нет:
Отправить комментарий