【发布时间】:2016-08-01 08:38:32
【问题描述】:
假设我们有,
var obj = {
name: "AKS"
};
console.log(obj.name);
console.log(obj.lname);
输出:
AKS undefined
如果我们这样做,还有什么地方:
var func = function() {
var name = "AKS";
};
console.log(name);
输出:
error: name is not defined
- 在第一个 sn-p 中,未定义 obj 属性 lname。那为什么 不抛出错误?
- 在第二个 sn-p 中,名称未在 函数范围,也不在全局范围内。因此错误是 预计。
两者的基本区别是什么? 提前致谢。
【问题讨论】:
-
终于找到了答案。 当解释器发现一个对象试图访问一个属性(
newObj.prop)时,它首先查看该属性是否直接定义在该对象上。如果没有找到,它会查找 Prototype 对象。如果它在那里找到它会重新运行该值,否则返回undefined
标签: javascript javascript-objects