美文网首页
JS如何使用this关键字

JS如何使用this关键字

作者: 本杰明蚂蚁 | 来源:发表于2018-07-21 10:50 被阅读30次

    window.name = '麻云';

        var obj = {

            name:'麻花疼',

        }

        function getName(){

          console.log(getName.length);

          console.log(this.name);

        }

      obj.getName = getName;

      obj.getName();   //this指向obj 麻花疼

      getName();////this指向window 麻云

那么this 关键字所指向的是当前函数运行时所处在的环境。

bind(),call(),apply();方法可以改变函数this的指向。

      getName.bind(obj)();

      getName.call(obj,1,2,3);

      getName.apply(this,[1,2,3]);

全部都指向obj,那么这3个如何区分?

bind方法不会立即执行函数,返回的是函数,并不调用,需要自己加()后调用;

call,apply的第一个参数就是将this指向谁。

getName.call(this),getName.apply(this)这么写是毫无意义的,this参数指的是getName调用的环境;

自己改变自己的this指向,并且指向自己,就等同于getName();

getName.call(null),,getName.apply(null)传null也是一样的

call方法不限制接受的参数;

apply方法接受两个参数,第二个参数必须是数组;

应用:使用apply传数组参数到Math的max,min方法来活得数组中的最大值,最小值;

          var a = [1,2,3,4,5,6,7,8,9,0];

        var nMax = Math.max.apply(this,a);

        var nMin = Math.min.apply(this,a);

        console.log(nMax);

        console.log(nMin);

为了要传第二个参数a,所以第一个参数写this,null都可以;

相关文章

  • 2016/12/10

    技术 vue.js+layer.open如何结合使用? ORA-00923: 未找到要求的 FROM 关键字 py...

  • JS如何使用this关键字

    window.name = '麻云'; var obj = { name:'麻花疼', ...

  • js 中的变量命名 关键字

    关键字和保留字 关键字 就是在js中已经被使用了的单词。 js本身已经赋予其功能 保留字 在未来js标准中可能被用...

  • 10个比较流行的JavaScript面试题

    1.如何理解 JS 中的this关键字? JS 初学者总是对this关键字感到困惑,因为与其他现代编程语言相比,J...

  • 创建对象

    js中没有类这个概念,与之对应的叫做对象。 new关键字相当于class关键字 js中,类和函数都是使用funct...

  • 变量var声明和函数function声明优先级

    变量声明优先级 使用var关键字和function关键字声明的变量,会被JS的解释器优先解析执行,具有优先级 使用...

  • 常见浏览器兼容问题

    JS相关 1. const问题 说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,...

  • 20161208微信小程序学习笔记-NO.7实现crypto&b

    关键字:base64 crypto 首先使用npm包管理工具安装 base64.js 和crypto.js或者可以...

  • JavaScript

    问题: textArea.innerText("h") --->显示H 或^h js中this关键字的使用3.o...

  • iOS Copy 关键字

    如何使用copy关键字在定义NSString,NSArray等不可变类型,经常使用了copy关键字,这是因为他们存...

网友评论

      本文标题:JS如何使用this关键字

      本文链接:https://www.haomeiwen.com/subject/xozcmftx.html