вторник, 18 июня 2013 г.

JavaScript 3 Способа наследования свойств объектов

Наследование свойств одного объекта другим объектом путем копирования свойств из одного объекта в другой подобно копированию элементов массива.

var parent = {
     a: 1
   , b: 2
};

var child = {
     c: 3
};

for (var key in parent) {
    child[key] = parent[key];
}

Итог:

console.log(child.a);
console.log(child.b);
console.log(child.c);

Наследование свойств одного объекта другим объектом путем создания нового объекта на основе объекта родителя с последующим добавлением новых свойств в объект потомок.

function newObject(parentObject) {
    function F () {}
    F.prototype = parentObject;
    return new F();
}

var parent = {
     a: 1
   , b: 2
};

var child = newObject(parent);
child.c = 3;

Итог:

console.log(child.a);
console.log(child.b);
console.log(child.c);

Наследование свойств родительского объекта функцией конструктором новых дочерних объектов через Function.prototype.

Внимание!!! Для создания объекта обязательно необходимо использовать ключевое слово NEW перед вызовом функции!!!
Это очень важно не забывать!!! Если используется NEW, то функция возвращает объект!!!

(
Например

var a = String('hi');
var b = new String('hi');

console.log(a); // строка hi
console.log(b); // object

console.log(typeof a); // 'string'
console.log(typeof b); // 'object'
)

var parent = {
     a: 1
   , b: 2
};

function CreateChildObject() {
    // var this = {}; - при создании нового объекта здесь всегда скрыто происходит такая операция
    this.c = 3;  // this относится к созданному объекту или элементу
    // return this; // optional - не обязательно, но при создании нового объекта здесь всегда скрыто происходит такая операция
}

CreateChildObject.prototype = parent;

var child = new CreateChildObject();

Итог:

console.log(child.a);
console.log(child.b);
console.log(child.c);

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

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