• 改变this的指向问题;


    用call()和apply()改变this的指向,那什么时候用this呢?(构造函数),那为什么要用构造函数呢?(为了生成对象)。

    1.解决函数内this指向的问题

    (1)var that/_this=this;在函数外提前声明一个变量

    (2)通过call()和apply()改变this的指向

    2.call()和apply()的区别

    用法是一样的,但是参数形式不一样

    call()  :   fn.call(obj,a,b)

    apply()   :   fn.apply(obj,[a,b])

    二者均代表的是将函数内的this换成Obj后再调用

    3.bind()修改函数内的this

    fn.bind(bind,a,b)  bind的用法只是改变了this的指向,但是并没有调用

    如果调用fn.bind(bind,a,b)()

    案例:

    function fn(){

      this.names="zhang",

      console,log(this.names)

    }

    var obj={

      names="li"

    }

    fn.call(obj);

    结果输出还是"zhang”

    分析:

    var obj={

      names="li"

    }

    就相当于>>>

    function fn(){

      this.names="zhang"

      console.log(this.names)

    }

    fn.prototype.name="li"

    fn()

    fn.call(obj)是fn继承了obj中的所有的属性,只要是继承的可以看成是公有的,天生自带的是私有的,在使用时,有了私有就不会使用共有的

    也可以得出:call() apply()都可以看成是继承

  • 相关阅读:
    JQuery插件,轻量级表单模型验证(续 二)
    关于DateTimeOffset的爱恨情仇
    JQuery插件,轻量级表单模型验证(续 一)
    asp.net 远程模型验证
    JQuery插件,轻量级表单模型验证
    Ef Core增加Sql方法
    初识依赖注入
    Core下简易WebApi
    sql语句实现行转列练习
    sql语句基本查询操作
  • 原文地址:https://www.cnblogs.com/qinlinkun/p/10139187.html
Copyright © 2020-2023  润新知