2014-09-09 3 views
2

Я новичок в Inheritance, и я просто пытался наследовать метод от другого объекта в JavaScript, но когда я запускаю код, он дает ошибку undefined function.Как заимствовать метод из другого объекта в JavaScript?

Может ли кто-нибудь помочь мне, как мне наследовать метод от другого объекта?

Ниже приводится JS Сниппет:

var palestrina = { 
    work: "MTS", 
    describe: function() { 
     return this.work; 
    } 
}; 

var pale = { 
    work: "STMS" 
    describe: palestrina.describe.bind(this) 
}; 

console.log(palestrina.describe()); 
console.log(pale.describe()); 

JSfiddle for the same

ответ

1

Значение this определяется как функция тока была названа.

Поскольку у вас нет функции, это будет window.

Невозможно получить ссылку на pale, чтобы перейти к bind, пока вы не создали объект.

Однако вам не нужно. Поскольку величина this зависит от того, как называется функция (в отличие от того, как она была построена), вы можете просто скопировать ссылку на функцию:

var pale = { 
    work: "STMS", 
    describe: palestrina.describe 
}; 
+0

Это, кажется, не работает, вы можете, пожалуйста, изменение в jsfiddle и leme знаете. –

+1

http://jsfiddle.net/909ffnco/1/ – Andy

+0

@ Энди: Вы можете сказать мне, в чем разница между тем, что предложил quentin, и palestrina.describe.call (бледно) –

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