function foo(num){
this.count=num;
}
foo.count=0;
alert(foo.count);//0
foo.call(foo,3);
alert(foo.count)//3;
这是一个关于返回值的问题,为啥第一个alert(...)返回0;第二个alert(...)返回是3呢??还请诸位指教!谢谢!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一个,直接修改了foo.count 的值是0,所以输出肯定是0,第二个,你foo.call(foo,3),用第一个foo去替换第二个foo,而第二个foo的属性count已经是3了,所以第二次输出是3,楼主应该是没看懂call的用法吧,解释的很口语化,纯属个人意见
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作thisObj。
说明白一点其实就是更改对象的内部指针,即改变对象的this指向的内容。这在面向对象的js编程过程中有时是很有用的。
运行下面代码,你会更加理解call
而你写的这行代码
其实就相当于