JS this:call, apply, bind 与 严谨模式 DAY65

call, apply

call , apply 立刻执行
bind 不会立刻执行

var nickname = '小鸡公主';var family = {    nickname: '皮杰先生',}function fn(a,b){    console.log(this , a ,b);}fn(1,2); // window 1 2// call apply 立刻执行fn.call(family , 1 ,2); // this 指向变成 family // apply 是以 阵列带入fn.apply(family, [3,4]); // this 指向变成 family // bind 不会立刻执行var fn2 = fn.bind(family,5,6); // this 指向变成 family fn2();var fn2 = fn.bind(family,5,6); fn2(1,2); // 不会呈现var fn2 = fn.bind(family,5);  // 5 1fn2(1,2);

进阶观念

var name = '小鸡公主';var family = {    name: '皮杰先生',}function fn(a,b){    console.log(this , typeof this , a ,b);}// 这里的 1 会以建构式呈现fn.call(1 , 1 ,2); // Number{1} object 1 2// 这里的 '你好' 会以建构式呈现fn.call('你好' , 1 ,2); // String{"你好"} object 1 2// 非严格模式下 若传入 undefined 或 null 会指向 windowfn.call(undefined , 1 ,2); // window object 1 2fn.call(null , 1 ,2); // window object 1 2

那什么是严格模式呢??


严格模式 (strict mode)
MDN: https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Strict_mode

加入 'use strict' 即可运作并不会影响不支援严格模式的浏览器可依据执行环境设定'use strict'透过抛出错误的方式消除一些安静的错误禁止使用一些有可能未来版本 ECMAScript 定义的语法
function fn(a,b){    'use strict'    console.log(this , typeof this , a ,b);}fn.call(1,1,2); // 1 number 1 2fn.call(undefined,1,2); // undefined undefined 1 2fn(1,2); // undefined undefined 1 2// 简易呼叫的 this 尽可能不要调用,它的本质其实是 undefined

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon41.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章