• javascript之this


    this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。

    应用情形1:如果一个函数fn中有this,这个函数又被上一级的对象所调用(obj.fn()),那么this指向的就是上一级的对象obj。

    应用情形2:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象。

    var obj = {
      a: 1,
      b: {
        name: 'emily',
        fun: function(val) {
          console.log(this.a,'--',val);
        }
      } 
    }

    应用情形3:如果一个函数fn中有this,但是该函数没有被上一级的对象所调用(直接调用fn()),那么this指向的就是window,这里需要特别说明的是在js的严格模式('use strict')中this指向的不是window,而是指向undefined。

    obj.b.fun('this指向上一级对象b');//尽管对象b中没有属性a,这个this指向的也是对象b,因为this只会指向它的上一级对象,不管这个对象中有没有this要的东西。
    var j = o.b.fun;
    j('指向window');
    应用情形4:构造函数this,示例如下
      这里之所以对象newFn可以点出函数Fn里面的user是因为new关键字可以改变this的指向,将这个this指向对象newFn,为什么说newFn是对象,因为用了new关键字就是创建一个对象实例,我们这里用变量newFn创建了一个Fn的实例,此时仅仅只是创建,并没有执行,而调用这个函数Fn的是对象newFn,那么this指向的自然是对象newFn
    function Fn() {
    this.value = 'Fn的构造函数this';
    }
    var newFn = new Fn();
    console.log(fna);// 输出 Fn {user: "Fn构造函数this"}

     

  • 相关阅读:
    [转]WPF 4 媒体播放器(MediaElement)
    WPF简单的文件资源管理
    shell脚本自动化部署
    Linux知识
    单例模式及其四种实现方式
    支付宝对接步骤 (app)
    《异类》读书摘要(上)
    Linux初级指令
    项目构建基础统一结果,统一异常,统一日志
    git看这一篇就够用了
  • 原文地址:https://www.cnblogs.com/emilyzz/p/14066757.html
Copyright © 2020-2023  润新知