博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apply、call、bind区别、用法-如何改变this的指向,以及实用场景
阅读量:4098 次
发布时间:2019-05-25

本文共 1447 字,大约阅读时间需要 4 分钟。

经常在各种三方插件看到这几个,但是对其用法区分一直懵懵懂懂的,今天抽空做了个总结
  • 正常调用f1函数,this指向window 

  • 改变this指向

  • bind

  • 若想要f1里的this依旧指向window,可如下设置(如:vue中使用导入js代码,若想js中正常使用this,则必须通过以下方式中的任意一种改变this指向)

apply、call、bind区别、用法都是用来改变函数的this对象的指向的;区分用法:var  numbers = [25,35,15,195,-55 ]; //取number中的最大的值console.log(Math.max(25,35,15,195,-55));//195console.log(Math.max.apply(Math,numbers));//195console.log(Math.max.call(Math,25,35,15,195,-55));//195console.log(Math.max.bind(Math)(25,35,15,195,-55));//195var  numbers = [25,35,15,195,-55 ]; //取number中的最大的值Math.max(25,35,15,195,-55) //195apply 立即调用    跟参数数组 Math.max.apply(Math,numbers);//195call  立即调用    跟数组元素 Math.max.call(Math,25,35,15,195,-55); //195bind  不是立即调用, 此处加()手动让其立即调用 Math.max.bind(Math)(25,35,15,195,-55);//195var dog = {    name:'xiaowang',    gender:'girl',    age:'24',    say:function(){        console.log(this.name+","+this.gender+","+this.age);    }}var cat = {    name:'miaomiao',    age:'12',    gender:'boy'}dog.say();//xiaowang,girl,24dog.say.apply(cat);//miaomiao,boy,12dog.say.call(cat);dog.say.bind(cat)();var mama = {    name:'xiaowang',    gender:'girl',    age:'24',    say:function(like,address){        console.log(this.name+","+this.gender+","+this.age+','+like+','+address);    }}var baba = {    name:'miaomiao',    age:'12',    gender:'boy'}mama.say('化妆','北京');//xiaowang,girl,24,化妆,北京mama.say.apply(baba,['打游戏','武汉']);//miaomiao,boy,12,打游戏,武汉mama.say.call(baba,'打游戏','武汉');mama.say.bind(baba)('打游戏','武汉');

 

转载地址:http://otqii.baihongyu.com/

你可能感兴趣的文章
Angular学习笔记:组件生命周期和自定义指令
查看>>
前端学习tips
查看>>
tips
查看>>
献给腾讯产品运营的面试处女秀——一面终结
查看>>
数据分析步骤——《谁说菜鸟不会数据分析》的总结
查看>>
产品的视角
查看>>
《结网》总结
查看>>
《人人都是产品经理》总结
查看>>
Axure下载安装汉化
查看>>
Axure安装FontAwesome字体为什么在字体中不显示的解决方案
查看>>
2019秋招刷题笔记
查看>>
产品要知道的各种英文abbr收集
查看>>
产品各种文档(BRD,PRD,MRD)参考
查看>>
竞品分析报告
查看>>
产品使用报告(产品分析)
查看>>
需求怎么由0到1?
查看>>
产品原型设计规范——Axure
查看>>
用户体验 &用户心理
查看>>
日常小bug&idea
查看>>
微信订阅号改版的想法
查看>>