我可能在这里误解了一些东西,但为什么我的this
/ self
总是将整个Window对象输出到控制台?
var myViewModel = function() {
var self = this;
console.log('My viewModel');
console.log(self);
}();
这导致以下控制台输出
我是否完全误导了this
对象?
答案 0 :(得分:1)
我是否完全误解了这个对象?
可能,但我不知道你的期望,所以我无法回答。
this
引用window
的原因是该函数立即执行。在以foo()
执行的函数(非严格模式)中,this
引用全局对象(window
)。
注意最后的()
:
var myViewModel = function() {
var self = this;
console.log('My viewModel');
console.log(self);
}(); // <--
这使得函数立即执行并将undefined
返回到myViewModel
,您可以通过在函数内部和之后添加console.log
语句来轻松验证。
我想你想省略那些并将函数本身分配给myViewModel
:
var myViewModel = function() {
var self = this;
console.log('My viewModel');
console.log(self);
}; // <--