首页 > 代码库 > this关键字的指向
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关键字的指向
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。