-
Notifications
You must be signed in to change notification settings - Fork 139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JS 函数 this 相关题目 #20
Comments
10 |
把 fn 函数里面代码改成 在 所以结果是:
|
var length=10;
function fn(){
console.log(this.length);
}
var obj = {
length:5,
method: function (fn) {
//fn绑定的上下文是global,this <=> window
//console.log(window.length)
fn();
//fn绑定的上下文是arguments,this <=> arguments
//即arguments.0=fn
//console.log(arguments.length)
arguments[0]();
}
};
obj.method(fn);
//>>>10
//>>>1
obj.method(fn, 123);
//>>>10
//>>>2 |
这个题目又一次印证了我的那篇《this到底是什么》 所以里面的 this 就是 arguments 了。 |
1、声明函数fn,打印出 this 的 长度。 我感觉越看越懵 |
@hellochenk
可以尝试打印出arguments看一下
执行
|
赞美大神,开头的谁调用它this就代表谁一句话就简单解释了this,最后的解释也非常详细。 |
arguments0; 的时候 this指向arguments,所以arguments.length是1 也就是fn函数 var length=10;
function fn(){
console.log(this.length);
debugger;//可以通过debugger断点调试,观察this的值
}
var obj = {
length:5,
method: function (fn) {
fn();
arguments[0]();
}
};
obj.method(fn);
obj.method(fn, 123); |
为什么要思考这种没意义的问题 把功能实现不就行了 |
一般来说,this有四种绑定规则。1.函数调用模式:this指向全局;2.方法调用模式:this指向方法所在对象;3.call/apply/bind的显示绑定;4.new自动绑定到新建对象。 我想在这道题里可以把第二个理解为方法调用模式,arguments数组也是对象arguments[0]为fn即arguments对象有一个方法fn,此时this.length即为arguments.length |
下面这段代码输出结果是?
The text was updated successfully, but these errors were encountered: