我最近开始学习Javascript,同时使用此代码中的代码进行一些实验:
var k = {
ab: "hi",
func: function() {
console.log("inner1" + this.ab);
(function() {
console.log("inner2 " + this.ab)
}())
}
};
k.func();
Run Code Online (Sandbox Code Playgroud)
这段代码给我的结果是"inner1 hi"和"inner2 undefined".
我没有得到它undefined的第二个原因console.log?
在this当你调用它,这取决于你怎么称呼它的功能就必然.将其称为值而不是属性 - (expression)()而不是object.method()- 将导致this设置为全局对象或undefined严格模式.
函数对象有两种方法,用明确指定的函数调用函数this:call和apply.你可以在这里使用前者.
(function() {
console.log("inner2 " + this.ab);
}.call(this));Run Code Online (Sandbox Code Playgroud)
这会将调用函数转发this给内部函数.
或者,您可以只分配this给变量.
var that = this;
(function() {
console.log("inner2 " + that.ab);
}());Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |