gpt4 book ai didi

javascript - 为什么仅当我尝试访问其属性之一时,对象才声称已定义?

转载 作者:行者123 更新时间:2023-11-30 08:36:06 24 4
gpt4 key购买 nike

使用以下代码:

req.Course.find({}).populate('students', 'username firstName lastName registered').populate('teacher', 'image mID firstName lastName').sort({title: 1}).exec(function(err, courses){
if(err) throw err;
req.toJade.courses = [];
if (courses){
req.toJade.courses = advs;
}
res.render('courses/list', req.toJade);

});

courses 是以下格式的对象数组:

[{
_id: objectid,
title: 'History',
teacher:
{
_id: objectid,
name: 'John Smith',
etc...
},
etc...
},
etc...
]

我在 Jade 中循环遍历这些对象的数组,当我尝试访问任何老师的属性

for c in courses:
h1= c.title
small= c.teacher.name

它返回一个错误,它无法读取未定义的属性“名称”。当我尝试访问类(class)对象的任何其他属性时,就会发生这种情况。

但是,使用

for c in courses:
h1= c.title
small= c.teacher

打印出整个明确定义的对象及其所有存在的属性和正确的值。

我哪里做错了,我怎样才能访问教师对象的任何属性?

最佳答案

只有当我们访问某个特定对象时,java 脚本才会检查其属性是否存在。因为它不像C#、Java那样是类型化语言。在 java 脚本中,我们可以动态添加或删除属性。

要检查对象中是否存在属性,我们可以使用适用于 javascript 中所有对象的函数。

objectname.hasOwnProperty("propertyToCheck")

关于javascript - 为什么仅当我尝试访问其属性之一时,对象才声称已定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com