2015-04-22 5 views
3

Я хочу создать несколько объектов, но не знаю, как писать аргументы функции внутри другой функции. Вот код с комментариями, чтобы лучше объяснить.Аргументы функции внутри функции

function Troop(rss, time, offense, defense){  
    this.rss= rss; 
    this.time= time; 
    this.offense= offense; 
    this.defense= function types(a, b, c, d){ 
    this.a= a; 
    this.b= b; 
    this.c= c; 
    this.d= d; 
    } 
} 
    Dwarf = new Troop(1,2,3, new types(11,22,33,44)); // this most be wrong 
    alert(Dwarf.defense.a) // how can I access to the values after? 

Спасибо.

ответ

4

Вы хотите, чтобы его собственная функция была types, тогда вы можете просто передать объект в конструктор Troop.

function types(a, b, c, d) { 
    this.a= a; 
    this.b= b; 
    this.c= c; 
    this.d= d; 
} 

function Troop(rss, time, offense, defense){  
    this.rss= rss; 
    this.time= time; 
    this.offense= offense; 
    this.defense= defense; 
} 

Dwarf = new Troop(1,2,3, new types(11,22,33,44)); // these lines are right 
alert(Dwarf.defense.a) // it's the function definition that was wrong :) 

В общем, я бы капитализировать имена классов, как Types, и сохранить переменные как dwarf строчными, но это еще только вопрос стиля, а не функциональность.

+0

Я думал об этом, но тогда последние две строки правильные? будут ли они работать? – Noobest

+0

Да, они работают отлично, как и у вас. Я не мог не изменить случай типов, но единственное реальное изменение, которое я сделал, это разбить «типы» на отдельную функцию. Не определяйте его внутри 'Troop'. Я просто вернул свои предложения в стиле, чтобы не мутить проблему. – Danny

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