var length = 10;
function fn() {
console.log(this.length);
}
var obj = {
length: 5,
method: function() {
fn();
arguments[0]();
}
};
obj.method(fn, 1);
结果:10 2 为神马??
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一个fn的this指向的是window,第二个fn的this指向的是对象!
楼主代码敲错了不少
输出 10 2 10
因为arguments是Javascript的一个内置对象,是一个类数组,也有this,这里的this就是arguments的this
第一个length是自定义变量length,第二个length是method方法内置对象arguments的长度,你传入了两个参数(fn,1),也就是数组arguments = [fn, 1];