2013-05-07 5 views
0

Я наткнулся на это на примере MDN и он не работает, как описано:JavaScript встроенные функции в функции

function makePerson(first, last) { 
    return { 
     first: first, 
     last: last, 
     fullName: function() { 
      return this.first + ' ' + this.last; 
     }, 
     fullNameReversed: function() { 
      return this.last + ', ' + this.first; 
     } 
    } 
} 

Example Call: 
> s = makePerson("Simon", "Willison") 
> s.fullName() 
Simon Willison 
> s.fullNameReversed() 
Willison, Simon 

Статья была написана в 2006 году, и в обоих IE10 и Chrome 26, он просто отображает буквальный код для функций fullName и fullNameReversed. Эта функция больше не работает для современных браузеров?

+9

Этот код работает. Может быть, вы забыли звонившие круглые скобки, когда вы это пробовали? – bfavaretto

+0

Да, кажется, я забыл вызывающие круглые скобки. Всем спасибо. – Josh

ответ

1

Похоже, вы пропустили круглые скобки с конца вызова функции.

Попробуйте

s.fullName(); 

вместо

s.fullName; 
1

Появляется работать нормально на хромом V25

Javascript

function makePerson(first, last) { 
    return { 
     first: first, 
     last: last, 
     fullName: function() { 
      return this.first + ' ' + this.last; 
     }, 
     fullNameReversed: function() { 
      return this.last + ', ' + this.first; 
     } 
    } 
} 

var s = makePerson("Simon", "Willison"); 
console.log(s.fullName()); 
console.log(s.fullNameReversed()); 

Выход

Simon Willison 
Willison, Simon 

На jsfiddle

1

Если вы получите код для функции, это, вероятно, потому что вы вызываете функцию как s.fullName, а не s.fullName() (Вам не хватает скобок)

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