• javascript之this


    全局作用域的this


    this == window   //true
    
    this.a  = 8 
    
    window.a  //8

    一般函数的this


    function thisTest(){
       return this;
    }
    
    
    thisTest() === window   //true
    
    
    function thisTest(){
       'use strict'
       return this;
    }
    
    thisTest() === undefined   //true

    作为对象方法的函数中的this


    var o  = {
      x:1,
      y:2,
      f:function(){
           return this.x
    }
    }
    
    o.f()  //x    做为对象方法函数中this,指向的是这个对象 

    对象原型链的上this


    var o  = {f:function(){retrn this.a+this.b}}
    
    var obj = Object.create(o)
    
    obj.a = 90;
    
    obj.b = 10;
    
    obj.f()  //100   原型链上的this,指向obj

    构造器中的this


    function fuc(){
       this.a = 37;
    }
    
    var f = new fuc();
    
    f.a   //37   
    


    function func(){ this.a = 65; return 1; } var func = new func(); func.a //65


    function  funct(){
       this.a = 65;
    
       return {x:1};
    
    }
    
    var funct = new funct();
    
    funct.x  //1


    // 通过new构造器创建对象时
    // 1 没有return 或者 return时基本类型的时候。返回this. (this的原型指向this所在的函数)
    // 2 返回的是对象类型,会将return的对象作为返回值

    call/apply方法与this


    function add(c){
      return this.a+this.b+c
    }
    
    var o = {a:2,b:4}
    
    add.call(o,4)  //10  call第一个参数传入要作为this的对象,后面参数传入函数参数列表中的参数,并以逗号隔开


    function add1(c){
      return this.a+this.b+c
    }
    
    var o1 = {a:2,b:4}
    
    add1.apply(o,[4])  //10    apply第一个参数传入要作为this的对象,后面参数传入函数参数列表中的参数,作为数组传入


     

    function fuc(x,y){
    console.info(x,y,this)
    }

    fuc.call(1,7,6);  //7 6 Number

    fuc.call(null); //undefined undefined Window

    fuc.apply(null); //undefined undefined Window  

    fuc.call(undefined); //undefined undefined Window

    fuc.apply(undefined); //undefined undefined Window  在一般模式下,call,apply传入null,undefined指向的window

    bind方法与this


    function z (){
       return this.a
    };
    
    var g = z.bind({a:"89"});
    
    g()   //"89"
    
    var o = {a:4,f:z,g:g};
    
    o.f()  //4   函数作为对象方法,this指向o对象,所有 o.f()为4
    
    o.g() // "89"  bind方法绑定了z()中this的指向为{a:"89"}
  • 相关阅读:
    C# Excel工作表区域Range装入数组
    【Word VBA】批量插入图片到表格
    C# Office Com 开发 创建任务窗格 CustomTaskPane
    C# Office Com 开发 Excel插件与函数dll注册
    视频逐帧转换为图片
    ssh 免密登录
    NPS 内网穿透配置
    php7.3 centos Call to undefined function AdminControllermcrypt_get_block_size()
    Centos 6 安装 php7.3.x
    nginx配置之proxy_pass路径加斜杠/以及包含路径的区别
  • 原文地址:https://www.cnblogs.com/dsitn/p/7074787.html
Copyright © 2020-2023  润新知