<script type="text/javascript">
function Animal() {
this.name = "Animal";
this.Say = function () {
console.log(this);
console.log(this.name);
}
}
function Cat() {
this.name = "Cat";
}
var animal = new Animal();
var cat = new Cat();
//animal.Say();
animal.Say.call(cat);
- 是不是 .调用animal.Say里面的this已经切换到指向cat对象,所以console.log(this);
- 打印了cat
- console.log(this.name); 打印了cat
这个call好懵逼呀,到底是什么东西..我实在搞不懂能不能来个例子 或者给我解释一下 , ,谢谢了
call是用于函数指定作用域的方法。call在Function的原型链上
Function.prototype.call
。call的第一个参数就是this的指向,null/undefined或者不传,this默认指向window。
你传了cat,那么this就会指向cat(object)。你还可以带参数
类似的还有apply,区别就是apply的参数用数组传进去
关于作用域的绑定,还可以了解es5新出的
bind
方法,