7 回答
TA贡献1829条经验 获得超7个赞
兄弟那个函数叫自执行函数 格式为(function(){})()这是一般格式 现在有es6了 所以也可以写成:
(()=>{})()箭头函数。 至于你说的有关于this指向的问题,我觉得这个你得先系统的去学this有指向window的,也有指向当前对象的,还有指向当前函数的,在回调函数中的this指向window。
TA贡献1860条经验 获得超8个赞
关于 this
,我已经在JavaScript 的 this 指向问题深度解析 进行了详细的讲述,所以这里就不重复了。
具体到这个问题,是关于 ko.computed()
的 API,看看从官方文档摘取的一段:
Managing ‘this’
The second parameter to
ko.computed
(the bit where we passedthis
in the above example) defines the value ofthis
when evaluating the computed observable. Without passing it in, it would not have been possible to refer tothis.firstName()
orthis.lastName()
. Experienced JavaScript coders will regard this as obvious, but if you’re still getting to know JavaScript it might seem strange. (Languages like C# and Java never expect the programmer to set a value forthis
, but JavaScript does, because its functions themselves aren’t part of any object by default.)
大致翻译一下第一句就是:ko.computed
的第二个参数指定在执行 computed 观察函数时的 this
。
所以在 ko.computed(function() {...}, this)
这里传入的 this
,就是在 function() {...}
使用的 this
,即 this.firstName()
和 this.secondName()
的那个 this
。也就是 AppViewModel
作用域中的 this
。
TA贡献1811条经验 获得超5个赞
我回一个没有文档时怎么判断吧,毕竟this和函数call apply bind也有关
一个debugger就知道了
this.__proto__ === ko.constructor.prototype;
this.__proto__ === AppViewModel.prototype;
添加回答
举报