пятница, 21 июня 2013 г.

Разница между переменными внутри функции конструктора объектов и переменными внутри prototype

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

function Tree(x) {
    this.value = x; // Это значение уникально для каждого объекта
}
Tree.prototype = {
    children: [], // Этот массив является общим для всех созданных объектов
    addChild: function(x) {
        this.children.push(x);
    }
};

var left = new Tree(2);
left.addChild(1);
left.addChild(3);

var right = new Tree(6);
right.addChild(5);
right.addChild(7);

var top = new Tree(4);
top.addChild(left);
top.addChild(right);

top.children; // [1, 3, 5, 7, left, right]

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

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