JavaScript的this, 以及function.call, function.apply

来源:互联网 时间:1970-01-01

关于this, java类方法中的this必定是其自身或子类对象;JavaScript函数中的this可以是任何对象。其原因是,JavaScript的function是一种内置对象,可以被赋值给一个变量或对象的属性。


function Person(){}
Person.prototype.sayHi = function(){ console.log("My constructor is "+this.constructor);}
function Fish(){}
Fish.prototype.sayHi = Person.prototype.sayHi;
var aPerson = new Person(), aFish = new Fish();aPerson.sayHi();aFish.sayHi();

===output===

My constructor is function Person(){}My constructor is function Fish(){}


以上代码表明,this取决于运行时调用函数的对象。若想指定this,可以使用function.call, function.apply.

aFish.sayHi.call(aPerson);

===output===

My constructor is function Person(){}


function.apply与call的区别是,apply可以传递两个参数,第一个参数为赋给this的对象,,第二个参数必须为数组。


参考: http://www.cnblogs.com/PengNian/articles/838215.html


相关阅读:
Top