JS改变this指向的方法

this是什么

this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。

this的指向

this就是谁调用我 我指向谁
1、以函数形式调用时,this是window;
2、以方法的形式调用时,this是调用方法的那个对象;
3、以构造函数的形式调用时,this是创建的那个对象;
4、使用call和apply调用时,this是指定的那个对象。

改变this指向的方法

一、call
            function Animal(){
				this.name="cat";
				this.showName=function(str){
					alert(str+this.name);
				}
			}
			function Cat(){
				this.name="Cat";
			}
			var animal=new Animal();
			// animal.showName("dog");//dogcat
			// animal.showName("这是一只快乐的")//这是一只快乐的cat
			var cat=new Cat();
			animal.showName.call(cat,"这是一只快乐的");//这是一只快乐的Cat
            function sub(){
				this.showSub=function(a,b){
					alert(a-b)
				}
			}
			function add(){
				this.showAdd=function(a,b){
					alert(a+b)
				}
			}
			//sub.call(add,30,20);//50
			function mid(){
				sub.call(this);
				add.call(this);
			}
			var mid=new mid();
			mid.showAdd(30,20);//50
			mid.showSub(30,20);//10
二、apply
            // 父类
			function Person(name,age){
				this.name=name;
				this.age=age;
			}
			// 子类 学生
			function Student(name,age,grade){
				// Person.call(this,name,age);
				Person.apply(this,arguments);//子类继承了父类
				this.grade=grade;
			}
			var s1=new Student("张三","23","景秀教育毕业","一年级");
			console.log("您好,",s1.name,"您今年",s1.age,"岁,就读于",s1.grade,",实在太棒了")
三、bind
function fn(x, y) {
				console.log(this);
			}
			var obj = {
				name: "zs"
			}
			fn(1, 2);
			fn.bind(obj, 1, 2)();
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值