オブジェクトをパラメータとして関数に渡そうとしているとき、その関数はオブジェクトのプロパティを配列にプッシュし、メソッドは追加された値をコンソールに表示します。私は渡すオブジェクトのインスタンスを正常に作成していますが、プロパティは定義されていません。どこで私は間違えましたか?オブジェクトを構造化代入する際のコメントで述べたように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.
破棄されたプロパティ名は一致する必要があります –
オブジェクトを破棄するとき、変数名はオブジェクト内のキーの名前と正確に一致する必要があります。したがって、あなたの例では、プロパティ{{_fn、_ln、_age} 'を破棄していますが、オブジェクト '{firstName、lastName、Age}'を作成しています。一致していないことに注意してください。これが動作しない理由です。 – CRice
は、タイプ「fisrtName」のように見えます。 –