我正在尝试理解执行上下文,创建阶段和执行阶段。
我在想,有人可以帮我理解原因吗,
console.log(thisFunction.ojbect1);
退货 - ' undefined'。
我认为,在创建阶段之后,当变量被分配'未定义时,运行执行阶段,然后用对象填充变量。
那么为什么我会得到未定义的' for' object1',而不是整个对象?
非常感谢。代码如下。
var thisFunction = function(){
var object1 = {
firstname: 'Mark',
printName: function(){
console.log(this.firstname);
}
};
object1.printName();
};
thisFunction();
console.log(thisFunction.object1);
答案 0 :(得分:0)
“Object1”不是“thisFunction”的属性,这就是你无法调用它的原因。 “Object1”是在“thisFunction”范围内创建的变量。
您只能访问父作用域的变量。
如果您想了解有关函数范围的更多信息,请阅读以下有趣内容。
答案 1 :(得分:0)
除了:
之外,它适用于您 var thisFunction = function(){
this.object1 = {
firstname: 'Mark',
printName: function(){
console.log(this.firstname);
}
};
this.object1.printName();
};
var tf = new thisFunction();
console.log(tf.object1);
使用typeof
可以帮助您更好地理解对象和功能之间的区别:
console.log(typeof thisFunction);
console.log(typeof tf);
console.log(typeof tf.object1);
console.log(typeof tf.object1.firstname);
输出:
功能
对象
对象
串
请参阅Plunker
中的此示例