js 改变this指向(二)、 五种方式的具体实现

 var name = "This Window";
       var obj = {
          name: 'This Object',
          getFunction: function () {
             return function () {
                return this.name;
                }
            }
        }
console.log(obj.getFunction()());//This Window

不改变this的情况下,输出结果为 This Window.


一、 通过在父函数设置临时变量 存储父函数中this。让this指向父级函数。

 var name = "This Window";
     var obj = {
         name: 'This Object',
         getFunction: function () {
           let that = this;
              return function () {
                   return that.name;
              }
           }
        }
console.log(obj.getFunction()());//This Object

二、直接使用箭头函数来改变this指向 ,让this指向父级函数

var name = "This Window";
       var obj = {
         name: 'This Object',
          getFunction: function () {
           return () => {
                 return this.name;
             }
            }
        }
 console.log(obj.getFunction()());//This Object

三、call( )函数

var name = "This Window";
        var obj = {
            name: 'This Object',
            getFunction: function () {
                return function () {
                    return this.name;
               }
            }
 }
console.log(obj.getFunction()());//This Window
console.log(obj.getFunction().call(obj));//This Object
    

四、apply( )函数

var name = "This Window";
    var obj = {
       name: 'This Object',
       getFunction: function () {
            return function () {
                return this.name;
             }
         }
   }
console.log(obj.getFunction()());//This Window
console.log(obj.getFunction().apply(obj));//This Object

五、bind( )函数(注意需手动调用)

var name = "This Window";
     var obj = {
         name: 'This Object',
         getFunction: function () {
             return function () {
                  return this.name;
            }
         }
}
console.log(obj.getFunction()());//This Window
console.log(obj.getFunction().bind(obj)());//This Object

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值