Javascript 为什么会出现这样的错误:未捕获类型错误:无法读取属性';约翰';未定义的
我是JavaScript新手,可能没有使用正确的术语,所以请容忍我 我希望在页面上显示以下内容 你好,我叫约翰·史密斯,今年29岁。你好,我叫苏西·阿尔波特,今年24岁 我想知道为什么苏西不能参考约翰的问候方法Javascript 为什么会出现这样的错误:未捕获类型错误:无法读取属性';约翰';未定义的,javascript,object,Javascript,Object,我是JavaScript新手,可能没有使用正确的术语,所以请容忍我 我希望在页面上显示以下内容 你好,我叫约翰·史密斯,今年29岁。你好,我叫苏西·阿尔波特,今年24岁 我想知道为什么苏西不能参考约翰的问候方法 <script> var employees = { john: { name: "John Smith", age: 29, job:
<script>
var employees = {
john: {
name: "John Smith",
age: 29,
job: "web developer",
greet: function(){
document.write("Hello my name is " + this.name + " and I am " + this.age + " years old. ");
}
},
suzie: {
name: "Suzie Alport",
age: 24,
job: "nursery assistant",
greet: employees.john.greet
}
};
employees.john.greet();
employees.suzie.greet();
</script>
var雇员={
约翰:{
姓名:“约翰·史密斯”,
年龄:29,,
工作:“网络开发者”,
问候:函数(){
文档。写下(“你好,我的名字是”+this.name+,我是”+this.age+“岁”);
}
},
苏西:{
姓名:“苏西·阿尔波特”,
年龄:24岁,
职位:“托儿所助理”,
问候:雇员
}
};
employees.john.greet();
employees.suzie.greet();
谢谢在您创建分配给
suzie
属性的对象时,employees
是未定义的
。在整个表达式完成之前,将对属性初始值设定项进行求值
以下是上述事件发生的顺序:
employees
的变量,其初始值为undefined
员工
)john
属性值)年龄
、工作
和问候
重复该过程john
属性suzie
)“Suzie Alport”
,并在#7中的对象上创建一个名为name
的属性,赋予该属性该值年龄
和作业
重复该过程employees.john.greet
,但失败,因为employees
是未定义的
document.write
把事情搞砸为止):
这是因为在我们尝试评估employees.john.greet
之前,上面#2中创建的对象的引用已分配给employees
变量
旁注: 避免使用
文档。在现代网页和应用程序中编写。相反,使用<代码>文档。编写
仅在初始页面加载期间按照您可能希望的方式工作;初始页面加载后,它将完全删除现有文档,并开始在同一窗口中编写新文档
例如,您可以将段落附加到document.body
中,如下所示:
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
使用上述两种方法()在JavaScript@shennan:这与范围无关或这
@T.J.Crowder我在胡乱猜测,因为这样的错误对我来说通常是范围问题的结果。这是在他把代码片段放上去之前…谢谢,你的一个步骤有错吗。第8步应该是:它计算“Suzie Alport”,并在名为name的**#7**的对象上创建一个属性,并赋予该属性值。@Abdi:谢谢。当我插入步骤1(我差点忘了!)时,我发誓有两个地方需要更新,但我只找到了一个。那是另一个。:-)
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}