call、apply、bind的用法和区别

call、apply、bind的作用

它们都是为了改变方法内部this的指向。

call、apply怎么区别?

  • callapply第一个参数均为this的指向
  • call的其余参数就是一个普通的参数列表。
  • apply除了第一个参数外,只接受一个数组类型的参数。

call的用法

var obj = {
			name: "zky",
		}

		function get(age,sex) {
		console.log("名字"+this.name+" 年龄"+age+" 性别"+sex)
		}
	get.call(obj,22,'男') //打印 名字zky 年龄22 性别男  此时的this通过call方法 指向了obj

apply的用法

var obj = {
			name: "zky",
		}

		function get(age,sex) {
		console.log("名字"+this.name+" 年龄"+age+" 性别"+sex)
		}
	get.apply(obj,[22,'男'])  //打印 名字zky 年龄22 性别男  此时的this通过call方法 指向了obj

bind与call和apply的区别

  • 第一个参数为this的指向,其余参数是一个普通的参数列表(这一点跟call很像) 返回的是一个函数,需要再调用一下
	var obj = {
			name: "朱康宇",
		}

		function get(age,sex) {
			console.log("名字"+this.name+" 年龄"+age+" 性别"+sex)
		}
		get.bind(obj,22,'男')()  //这里注意 需要()去调用一下这个bind方法 因为他返回的是一个函数
		//或者这样写(柯里化)
		get.bind(obj).bind(null,22).bind(null,'男')() //这里的this指向依赖宇第一个bind中传入的参数

这里简单说下柯里化是什么意思

  • 柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
  • 核心思想是把多参数传入的函数拆成单参数(或部分)函数,内部再返回调用下一个单参数(或部分)函数,依次处理剩余的参数。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章