2017-10-24 13 views
0

オブジェクトをパラメータとして関数に渡そうとしているとき、その関数はオブジェクトのプロパティを配列にプッシュし、メソッドは追加された値をコンソールに表示します。私は渡すオブジェクトのインスタンスを正常に作成していますが、プロパティは定義されていません。どこで私は間違えましたか?オブジェクトを構造化代入する際のコメントで述べたようにdestructuring returns undefined

let myApp =(function() { 
    let personProps = { 
     firstName: null, 
     lastName: null, 
     Age: null, 
    } 
    let university = { 
     numberOfSutdents : null, 
     numberOfStaff : null, 
     sections : ['Gumamela', 'St. Anne', 'St. John'], 
     students : [], 
     staff: [] 
    } 

    let staff = Object.create(personProps); 
    staff.hireDate = null; 
    staff.rule = null; 

    let faculty = Object.create(staff); 
    faculty.subjectTeaching = null; 
    faculty.NumberOfSectionsCovered = null; 

    let student = Object.create(personProps); 
    student.section = null; 
    student.year = null; 
    student.yeadEnrolled = null; 

    // Checks if staff is a prototype of university 
    let h = Object.getPrototypeOf(student) === personProps ? true : false; 

    // CMDS 
    let addStudent = ({_fn , _ln, _age}) => { 
     let _student = [ 
      student.firstName = _fn, 
      student.lastName = _ln, 
      student.Age = _age 
     ] 
     university.students.push(_student) 
    } 

    //Query 
    let getStudents =() => { 
     return console.log(university.students) 
     } 

    return { 
     addStudent, 
     getStudents 
    } 
})(); 


myApp.addStudent({fisrtName: 'marven', lastName: 'donque', Age: 22}) 
myApp.addStudent({fisrtName: 'john', lastName: 'tompson', Age: 23}) 

myApp.getStudents(); 


// it returns 2 instance of array, but with 3 undefined properties. 
+3

破棄されたプロパティ名は一致する必要があります –

+2

オブジェクトを破棄するとき、変数名はオブジェクト内のキーの名前と正確に一致する必要があります。したがって、あなたの例では、プロパティ{{_fn、_ln、_age} 'を破棄していますが、オブジェクト '{firstName、lastName、Age}'を作成しています。一致していないことに注意してください。これが動作しない理由です。 – CRice

+0

は、タイプ「fisrtName」のように見えます。 –

答えて

0

は、変数名は正確にオブジェクトのキーの名前と一致する必要があります: はここに私のコードです。また、生徒を作成したときにタイプミスがありました。fisrtNamefirstNameで、返信はconsole.logが必要ではありません。

let myApp =(function() { 
 
    let personProps = { 
 
     firstName: null, 
 
     lastName: null, 
 
     Age: null, 
 
    } 
 
    let university = { 
 
     numberOfSutdents : null, 
 
     numberOfStaff : null, 
 
     sections : ['Gumamela', 'St. Anne', 'St. John'], 
 
     students : [], 
 
     staff: [] 
 
    } 
 

 
    let staff = Object.create(personProps); 
 
    staff.hireDate = null; 
 
    staff.rule = null; 
 

 
    let faculty = Object.create(staff); 
 
    faculty.subjectTeaching = null; 
 
    faculty.NumberOfSectionsCovered = null; 
 

 
    let student = Object.create(personProps); 
 
    student.section = null; 
 
    student.year = null; 
 
    student.yeadEnrolled = null; 
 

 
    // Checks if staff is a prototype of university 
 
    let h = Object.getPrototypeOf(student) === personProps ? true : false; 
 

 
    // CMDS 
 
    let addStudent = ({firstName , lastName, Age}) => { 
 
     let _student = [ 
 
      student.firstName = firstName, 
 
      student.lastName = lastName, 
 
      student.Age = Age 
 
     ] 
 
     university.students.push(_student) 
 
    } 
 

 
    //Query 
 
    let getStudents =() => { 
 
     console.log(university.students) 
 
     } 
 

 
    return { 
 
     addStudent, 
 
     getStudents 
 
    } 
 
})(); 
 

 

 
myApp.addStudent({firstName: 'marven', lastName: 'donque', Age: 22}) 
 
myApp.addStudent({firstName: 'john', lastName: 'tompson', Age: 23}) 
 

 
myApp.getStudents(); 
 

 

 
// it returns 2 instance of array, but with 3 undefined properties.

1

あなたのパラメータ名が一致する必要があります:

をので、あなたがそれを変更する必要があります。

let addStudent = ({firstName , lastName, Age}) => { 
    let _student = [ 
     student.firstName = firstName, 
     student.lastName = lastName, 
     student.Age = Age 
    ] 
    university.students.push(_student) 
} 

そして、呼び出し中:

myApp.addStudent({fisrtName: 'marven', lastName: 'donque', Age: 22}); 

これは完全に正常に動作します。