我试图将一个对象作为参数传递给一个函数,然后该函数会将对象的属性推送到一个数组,然后一个方法会将添加的值显示到控制台。它成功创建了我传递的对象实例,但属性未定义。我哪里做错了? 这是我的代码:
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.
最佳答案
您的参数名称应匹配:
所以你必须将其更改为:
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});
这将完全正常工作。
关于javascript - 解构返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46916745/