2015-06-03 3 views
0

У меня есть код ниже. проблема, которую я не понимаю, поэтому мне не нужно ссылаться на объект «children» через this.children, но затем получить доступ к первому или фамилии, я должен использовать this.firstname ....Javascript - Область и это

Пожалуйста, помогите я понимаю, почему.

function User(first, sur) { 

    var firstName; 
    var surName; 
    var age; 
    var children = []; 
    this.firstName = first; 
    this.surName = sur; 

    this.getDisplayName = function() { 
     return this.firstName + ' ' + this.surName; 
    }; 

    this.getTotalLength = function() { 

     return (this.firstName.length + this.surName.length); 
    }; 

    this.displayFullName = function() { 
     return (this.firstName + ' ' + this.surName); 
    }; 

    this.changeMaidenname = function(newSurname) { 
     if (newSurname) 
     { 
     this.surName = newSurname; 
     } 
    }; 

    this.addChild = function(childUser) { 
     children.push(childUser); 
    }; 

    this.numberOfChildren = function() { 
     return children.length; 
    }; 

    this.killChild = function(childUser) { 
     children.forEach(function(item,index) 
     { 
      if (item.firstName === childUser.firstName && item.surName === childUser.surName) 
      { 
       children.splice(index, 1); 
      } 
     } 
    ) 
    }; 

}; 

module.exports.User = User 
+0

'firstName' и' this.firstName' являются и существующими идентификаторами, но вы не храните значение в 'firstName' (while вы сохраняете значение в 'this.firsName'). – apsillers

+0

[Здесь] (http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html) вы можете прочитать больше о модульном шаблоне и [здесь] (http://www.sitepoint.com/mastering -javascripts-this-keyword /) об этом ключевом слове –

ответ

0

В js это ключевое слово используется для создания общедоступных переменных, тогда как var ограничивает область видимости этой переменной этой конкретной функцией. :). Вы не можете даже получить доступ к объекту для детей, если он не определен. This.children = []

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