2015-08-27 2 views
0

Мой друг спросил меня, почему бы вам сделать правильное наследование прототипов, если бы вы могли просто использовать функцию расширения подчеркивания?Последствия наследования JS с прототипом _.extend

_.extend(A.prototype, B.prototype) 

Есть ли негативные последствия такого подхода?

+1

Цепочка прототипа не установлена. Он просто копирует свойства. – thefourtheye

ответ

0

Если Вы хотите создать объект с помощью prototype, Вы можете использовать только object для этого:

function A(){ 
    this.a = 1; 
    this.b = 2; 
}; 

var B = { 
    b : 'b', 
    c : 'c' 
}; 

_.extend(A.prototype, B); 
var a = new A; 

В этом случае _.extend будет работать, как Вы (или Ваш друг =)) Ожидаемый результат: объект a имеет propertirs a & b:
a - underscore

Но в цепочки прототипов, объект a имеет СВОЙСТВ c:
a.c - underscore

Но зачем использовать underscore, когда JS имеет стандартную функцию для этого?

+0

Что такое стандартная функция js? – FreeLightman

+0

@FreeLightman Извините. Я из прошлого знал ответ на этот вопрос, но я от настоящего, долгое время не работаю с прототипированием, и я действительно не помню, что я имел в виду 2 года назад = \ (позор мне) – user3335966

Смежные вопросы