手写call、apply、bind】的更多相关文章

call方法的实现 Function.prototype.MyCall = function(content,...args){ const self = content || window; const args = args.slice(1) const self.fn = this const result = self.fn(args) delete self.fn return result } apply方法实现,和call方法差不多 Function.prototype.MyApp…
//实现call var that = this ; //小程序环境 function mySymbol(obj){ let unique = (Math.random() + new Date().getTime()).toString(32).slice(0,8); if(obj.hasOwnProperty(unique)){ return mySymbol(obj) }else { return unique; } } let Person = { name:'Tom', say(age…
call Function.prototype.myCall = function(){ var object = arguments[0]; var arr = []; for(var i = 1; i < arguments.length; i++){ arr.push(arguments[i]); } object.__proto__._fn = this; var result = object._fn(...arr); delete object.__proto__._fn; retu…
函数原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础扎实,绕不开这些基础常用的API,这次让我们来彻底掌握它们吧! 目录 call,apply,bind的基本介绍 call/apply/bind的核心理念:借用方法 call和apply的应用场景 bind的应用场景 中高级面试题:手写call/apply.bind call,apply,bind的基本介绍 语法: fu…
少废话,show my code call 原理都在注释里了 // 不覆盖原生call方法,起个别名叫myCall,接收this上下文context和参数params Function.prototype.myCall = function (context, ...params) { // context必须是个对象并且不能为null,默认为window const _this = typeof context === "object" ? context || window : w…
1 call.apply.bind 用法及对比 1.1 Function.prototype 三者都是Function原型上的方法,所有函数都能调用它们 Function.prototype.call Function.prototype.apply Function.prototype.bind 1.2 语法 fn代表一个函数 fn.call(thisArg, arg1, arg2, ...) // 接收参数列表 fn.apply(thisArg, argsArray) // apply 接收…
分析一下call的使用方法:call是显示绑定this指向,然后第一个参数是你所指向的this对象,后面跟着多个参数,以逗号隔开 function sum(num1,num2){ return num1 + num2 } sum.call({},1,2) // 3 上面是一个最简单的call使用方法,call的第一个参数,可以是对象,可以是数字,可以是空对象 当call的第一个参数是undefined或者是null时,他的指向是window 接下来就一步步的开始手写一个简单的call 首先第一步…
JavaScript中的this指向规则 源码来袭:call.apply手写实现与应用 理解建议:如果对this指向规则不了解的话,建议先了解this指向规则,最好还能对call和apply的使用和内部原理也有所了解,不然直接研究bind还是会有些难度的. 一.bind()的使用 //html <button id="btn"></button> //js var list = { init:function(){ this.ms = "duyi&qu…
关于this指向可以了解我的另一篇博客:JavaScript中的this指向规则. 一.call与apply的使用 回顾call与apply的this指向: var value = "window"; var obj = { value:"obj" } fonction show(){ console.log(this.value); } show();//window show.call(obj);//obj show(null);//window 回顾call与…
Function.prototype.bind 函数,参见ECMA规范地址 如题,这次来实现一个boundFunction函数,不挂载在Function.prototype上,而是一个单独声明的函数.挂载在原型上的bind,可以参考MDN 主要步骤,摘自ECMA规范,如图: 实现思想:当然是依葫芦画瓢,这里,我们借用ES6的...运算符与解构赋值.目的是图省事,实现bind函数,主要是了解其内部的操作流程. 首先,把需要用到的函数,都依照规范声明实现,其中FunctionIsConstructo…