我知道width: 100%; height: 100%
变量指的是全局对象(浏览器中的窗口)或包含它的对象(如果使用的话)在对象的方法中),除非它被不同地指定(例如使用绑定方法)。
现在,我有以下示例:
this
输出是:
"这" inside方法:[object Object]
对象{param:" Luciano"}
"这"内部方法:[对象窗口]
窗口{...}
我能理解为什么在//define an object
var obj = {
param: 'Luciano',
bar: function () {
console.log('"this" inside method: ' + this);
return this;
}
};
var a = obj.bar();
console.log(a);
//
var b = obj.bar;
console.log(b());
的情况下,此变量指向var a = obj.bar()
对象。有人可以向我解释(在执行上下文和范围链 )为什么obj
{{1}变量等于var b = obj.bar
对象?我希望也等于this
。
答案 0 :(得分:0)
您使用var b = obj.bar; b();
实际执行的操作是“采用bar
的方法obj
并直接调用它,不使用this
(或使用window
作为{{{ 1}})“vs this
”表示“调用方法obj.bar()
bar
为obj
”。
混淆来自于this
不仅仅是简单的“给我一个键的值”这一事实,如果与.
符号一起使用,它也会“绑定”一个上下文。否则就不会。