среда, 19 июня 2013 г.

Что такое prototype?

Что такое 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 хранится не в создаваемых объектах, а в самой функции конструкторе.

Комментариев нет:

Отправить комментарий