第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

【金秋打卡】第七天 call,apply,bind區(qū)別

標簽:
JavaScript

第一模块:

课程名称:直面JavaScript中的30个疑难杂症

章节:7-7

讲师名称:公明2020

第二模块:

  • call,apply,bind都是是干什么用的?

call,apply,bind都是可以改变普通函数的this指向(不能改变箭头函数的this指向)的方法,这三个函数实际上都是绑定在Function构造函数的prototype上,而每一个函数都是Function的实例,因此每一个函数都可以直接调用call\apply\bind

第三模块:

// call的第一个参数是this要指向的对象,并且第二个参数开始,可以接收多个参数作为改造后的函数参数,使用call方法,改造后的函数会立即执行。call的返回值是使用调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。
const obj = {
	name: '张三',
	age: 20,
}
function fn(params1, params2) {
	console.log(this.name, this.age, params1, params2);
}
const result = fn.call(obj, '参数1', '参数2'); // 打印:张三, 20, 参数1, 参数2
console.log(result); // 打印undefined

// apply接收两个参数,第一个参数是this要指向的对象,第二个参数是一个数组(或一个类数组对象),数组或者类数组对象中包裹的是要传递给改造后的函数的参数,使用apply方法,改造后的函数会立即执行。apply的返回值是使用调用者提供的 this 值和参数调用该函数的返回值。若该方法没有返回值,则返回 undefined。
const obj = {
	name: '张三',
	age: 20,
}
function fn(params1, params2) {
	console.log(this.name, this.age, params1, params2);
}
const result = fn.apply(obj, ['参数1', '参数2']); // 打印:张三, 20, 参数1, 参数2
console.log(result); // 打印undefined

// bind的第一个参数是this要指向的对象,并且第二个参数开始,可以接收多个参数作为改造后的函数参数,使用bind方法,改造后的函数并不会立即执行,而是作为bind方法的返回值return出来,因此需要额外调用。bind的返回值就是改造后的函数。
const obj = {
	name: '张三',
	age: 20,
}
function fn(params1, params2) {
	console.log(this.name, this.age, params1, params2);
}
const resultFun = fn.bind(obj, '参数1', '参数2');
resultFun(); // 打印:张三, 20, 参数1, 参数2

第四模块:

https://img2.sycdn.imooc.com/635fc7b10001938513330787.jpg

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消