我是靠谱客的博主 野性猎豹,最近开发中收集的这篇文章主要介绍bind,apply,cell的区别以及用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
     // bind()方法会给予一个现有的函数,把这个函数复制,再创建一个新的函数,并永久绑定this,还可以绑定部分参数
     // 例子:算薪资 = 底薪 + 奖金
     function calc(base,bonus){
     	console.log(this.ename + "的总工资为:"+ (base + bonus));
     }
     var lilei = {ename : "李磊"};
     var hmimi = {ename :"韩梅梅"};
     calc(3000,5000);//undefined的总工资为:8000(因为这个时候的this指向的是window)
     //使用call关键字,将calc的this指向调用该方法的对象
     calc.call(lilei,900,4000);
      calc.call(hmimi,900,4000);
      //call方法只能使用一次,下次要看工资的时候,又要调用,很麻烦,所以使用bind()函数可以解决这个问题
      var lilei_calc = calc.bind(lilei,9000);//bind第一个参数绑定的是对象,让this指向调用该方法的对象,后面的参数是一个一直会用的参数
      lilei_calc(400,)
      lilei_calc(300,)
      lilei_calc(200,)

// 需求: 创建一个对象,有name、age、sex、tel
	利用apply改变this指向时,可以和arguments搭配使用
	function Person(){
		this.name = arguments[0];
		this.age = arguments[1];
	}*/
	var person = new Person("jack",25);
	var obj = {}
	// Person.call(obj);//让Person中所有this的预设指向,都改变成obj;并且可以在后续追加参数
	// 需求: 创建一个对象,有name、age、sex、tel
	function Student(name,age,sex,tel){
		//call借用别人的方法,完成自己的事情
		//call 需要把实参按照形参的个数传进去
		// Person.call(this,name,age);// this -->window
		//apply 需要创一个arguments  里面需要注意实参和新参的顺序
		Person.apply(this,[name,age]);
		//call 和 apply的作用是一样的,只不过传参方式不一样
		this.sex= sex;
		this.tel = tel;
	}
      /*总结:call apply bind
      call和apply:都是临时借用一个函数,并替换this的指向,他们都是立即执行
                   他们的不同之处:传参的方式不一样
      bind:是基于现在已经存在的函数,复制这个函数,并永久绑定this为指定对象,并且可以绑定一个一直都会用到的参数
                    在创建的时候,之创建,不执行,要执行的话,需要调用


      在什么情况下选择这三红方法:
       函数在创建的时候需要立即执行:call /  apply
       函数在创建的时候不需要立即执行:bind
       */
	</script>
</head>
<body>
	
</body>
</html>

最后

以上就是野性猎豹为你收集整理的bind,apply,cell的区别以及用法的全部内容,希望文章能够帮你解决bind,apply,cell的区别以及用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部