2016-01-24 3 views
0

Я пытаюсь понять .bind и сделал следующий код:console.log возвращает дополнительный неопределенные

односвязного объекта:

person = { 
    name:"Joe", 
    surname:"Something", 
    tool:"gun", 
    action: function(){ 
     console.log("shoot my wife"); 
    } 
} 

функция:

function police(){ 
    console.log("You are under arrest, " + this.name + " " + this.surname); 
} 

и связывание лицо возражает против полицейской функции

var newPolice = police.bind(person); 

И, наконец, я утешаю войти его:

console.log(newPolice()); 

я получить нужную строку («Вы находитесь под арестом, Джо что-то»), но я также получаю неопределенный, и я понятия не имею, где она приходит от. (В коде это console.log (newPolice()), который генерирует undefined)

ответ

3

Это не имеет никакого отношения к bind.

При вызове newPolice() он записывает результат этого:

console.log("You are under arrest, " + this.name + " " + this.surname); 

Когда вы звоните console.log(newPolice());, теперь у вас есть дваconsole.log заявления, которые, между ними, LOG:

  • То же, что и раньше
  • Возвращаемое значение newPolice

newPolice не имеет return заявление, поэтому она возвращает undefined.

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