蛀牙--《设计模式---通往未来的很高的台阶之(五)》

今天谈谈this call apply

为什么要特意说一说这几个关键字呢。就学就行了,他们应用还是蛮广泛的

1、this

和其他语言不一样,js中的this总是指向一个对象,而具体指向那个对象是在运行时基于运行时函数的执行环境动态绑定的。

那么this指向分几种方式呢

(1)、作为对象的方法调用

当函数作为对象的方法被调用时,this指向该对象

var obj = {
       a:1,
       getA:function(){
   
              alert( this === obj );  //输出  true
              alert( this.a );   //输出  1
    }
};

obj.getA();

(2)、作为普通函数调用

当函数不作为对象的属性被调用时,此时this总是指向window对象

window.name = "globalName";

var getName = function(){
   
      return this.name;
};
console.log(getName());//输出 globalName

这里还分几种不同的情况 比如说我们在 button节点的时间函数内,有一个局部的回调方法,回调方法会被作为普通的函数调用。那么this就指向了全局对象 也就是window 。该怎么办呢???

这就需要我们保存div节点的引用。 方法就不详细介绍了 ,相信大家在平时的开发中都用到了。

在ES5的严格模式下,以上情况this被规定为undefined

(3)、构造器调用

js中没有类,但是可以从构造器中创建对象,同时也提供了new运算符,使得构造器很想一个类。

构造器的外观和普通函数提莫一样,区别就是调用的方式不同。当用new调用函数时,该函数总会返回一个对象,通常情况下,构造器里的this就指向返回的这个对象。

var MyClass = fucntion(){
    this.name = 'zhuya';
};

var obj = new MyClass();
alert( obj.name ); //输出 zhuya

但是用new调用构造器时,要注意的问题就是,如果构造器显示的返回了一个objec

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值