this关键字的指向
Posted 风起了--
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this关键字的指向相关的知识,希望对你有一定的参考价值。
javascript 的this关键字总是指向一个对象,具体指向哪个对象是在运行基于函数的执行环境动态绑定的,而非函数被声明时的环境。this的指向除去with和eval的情况,具体的指向大致分为四种
1.作为对象的方法调用。
2.作为普通函数调用
3.构造器的调用
4.Fun.prototype.call 或 Fun.prototype.apply
// 1.在javascript中作为对象的方法被调用,this指向该对象 var obj = { a:1, getA : function(){ console.log(this === obj); console.log(this.a); } }; obj.getA(); //对象调用方法 this指向对象 输出1
// 2.在javascript中作为普通函数被调用,this指向全局对象 window.name = "wu"; var myObject = { name:"seen", getName : function(){ return this.name; } }; console.log(myObject.getName()); //输出 seen var getName1 = myObject.getName;
console.log(getName1()); //this指向全局 输出 wu
//3构造器调用 构造器中的this指向返回的这个对象 var MyClass =function() { this.name = "seen"; }; var obj = new MyClass(); //this指向本身 console.log(obj.name); //输出seen
//4 apply call可以动态改变函数传入的th var obj1 = {
name:"sevn", getName: function(){ return this.name; } }; var obj2 ={ name:"anne" }; console.log(obj1.getName()); //输出sevn
console.log(obj1.getName.call(obj2)); //输出anne
console.log(obj1.getName.apply(obj2)); //输出sanne
call(a,b) apply(a,b) 均接受两个参数 ,a是this对象的指向 ,b是带下标的集合,可以是数组
call中的b参数要一个个全部列出,例如 call(a,1,2,3)
apply中的b参数传入数组 例如 apply(a,[1,2,3])
可以用arguments代替apply(a,arguments) apply的使用比call要多
以上是关于this关键字的指向的主要内容,如果未能解决你的问题,请参考以下文章