Расширяя ответ @ Бенри.
Я считаю, что наличие функции расширения для копирования свойств одного объекта на другой является существенным. Есть полу-традиция помещать это в Объект; Object.extend()
существует во многих небольших библиотеках (примечание: это не то же самое, что Object.prototype).
Object.extend = function ( take, give ) {
for (var k in give) {
if (give.hasOwnProperty(k)) {
take[k] = give[k];
}
}
return take;
}
Это плюс, что вы можете использовать удобные для чтения буквенные обозначения при написании кода:
function Cat (c) {
Object.extend( this, ( c || this.defaults ) );
}
Object.extend(Cat.prototype, {
meow : function() {
alert( 'Meow, my name is ' + this.name );
},
defaults : {
name : 'I have no name',
id : null
}
});
Вы можете создать свою армию кошек довольно просто:
var cats = [
{ 'id': 0, 'name': 'Persian' },
{ 'id': 1, 'name': 'Calico' },
{ 'id': 2, 'name': 'Tabby' }
];
for (i=0,len=cats.length; i<len; i++) {
cats[i] = new Cat( cats[i] );
}
cats[0].meow(); // displays "meow, my name is Persian"