KnockoutJS:这个/ self对象输出整个Window对象

时间:2014-12-17 20:55:59

标签: javascript knockout.js

我可能在这里误解了一些东西,但为什么我的this / self总是将整个Window对象输出到控制台?

var myViewModel = function() {
    var self = this;
    console.log('My viewModel');
    console.log(self);
}();

这导致以下控制台输出

enter image description here

我是否完全误导了this对象?

1 个答案:

答案 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);
}; // <--

Learn more about this.