当前位置: 首页 > news >正文

汕头 网站太原制作网站的公司哪家好

汕头 网站,太原制作网站的公司哪家好,玛卡h5制作官网,学网站建设要什么对于 call / apply / bind 来说#xff0c;他们的首要目的是用于改变执行上下文的 this 指针。 call / apply 对 call / apply 的使用#xff0c;一般都如下#xff0c;用于改变执行环境的上下文。只是 call 接受的是一个一个的参数#xff0c;而 apply 则是接受的是一个参…对于 call / apply / bind 来说他们的首要目的是用于改变执行上下文的 this 指针。 call / apply 对 call / apply 的使用一般都如下用于改变执行环境的上下文。只是 call 接受的是一个一个的参数而 apply 则是接受的是一个参数数组。 const obj1 {a: 1,myFunc(var1) {console.log(this.a var1)} } const obj2 {a: 2 }const myFunc obj1.myFuncmyFunc(1) // NaN obj1.myFunc(1) // 2 myFunc.call(obj2, 1) // 3 myFunc.apply(obj2, [1]) // 3 bind bind 是 ES2015 出的一个方法也是用于改变函数内部的 this 指向。但不一样的是bind 方法不是直接执行的而是生成一个新的已被改变过的函数。 const obj1 {a: 1,myFunc(var1) {console.log(this.a var1)} } const obj2 {a: 2 }const myFunc obj1.myFunc const bindMyFunc1 myFunc.bind(obj1) const bindMyFunc2 myFunc.bind(obj2)myFunc(1) // NaN bindMyFunc1(1) // 2 bindMyFunc2(1) // 3 通过上面的例子就可以看出来bind 方法就可以生成一个新的 this 指向的 function。 手动写 bind 函数 仅仅作为简单实现的话我们仅需要注意改变 this 指向和预置参数即可。 function bind(fn, _this, ...args) {if(typeof fn ! function) {throw new Error(bind fn need to be function)}return function(...innerArgs) {return fn.apply(_this, [...args, ...innerArgs])} } 当然这个手动实现的 bind 方法是只实现了最主要的功能对函数的原型链和作为构造函数的方式都是没有考虑到的。这里可以参考 MSDN 的 polyfill 方法。 if (!Function.prototype.bind) {Function.prototype.bind function(oThis) {if (typeof this ! function) {// closest thing possible to the ECMAScript 5// internal IsCallable functionthrow new TypeError(Function.prototype.bind - what is trying to be bound is not callable);}var aArgs Array.prototype.slice.call(arguments, 1),fToBind this,fNOP function() {},fBound function() {// this instanceof fBound true时,说明返回的fBound被当做new的构造函数调用return fToBind.apply(this instanceof fBound? this: oThis,// 获取调用时(fBound)的传参.bind 返回的函数入参往往是这么传递的aArgs.concat(Array.prototype.slice.call(arguments)));};// 维护原型关系if (this.prototype) {// Function.prototype doesnt have a prototype propertyfNOP.prototype this.prototype; }// 下行的代码使fBound.prototype是fNOP的实例,因此// 返回的fBound若作为new的构造函数,new生成的新对象作为this传入fBound,新对象的__proto__就是fNOP的实例fBound.prototype new fNOP();return fBound;}; } 转载于:https://www.cnblogs.com/YikaJ/p/10683142.html
http://www.yutouwan.com/news/476103/

相关文章:

  • 深圳网站设计公司排名热血传奇网页游戏
  • 网站开发 公司 深圳东莞最新消息今天
  • 做网站费用上海WordPress文章首页缩进
  • 买了个网站源码后要怎么用wdcp自动备份wordpress
  • 有没有便宜的网站制作上海监理建设协会网站
  • 零六年自助建设网站郑州妇科医院排行榜前十名
  • 网站做照片企业网站建设目标
  • 免费做章子的网站wordpress4.9.4 模版修改
  • 手机网站空间申请西安网页设计多少钱
  • 洛阳网站开发培训宝安建网站多少钱
  • 河北搭建营销型网站百度四川建设厅网站
  • 做全屏式网站尺寸是多大网站流量 收益
  • 贵阳建站哪个网站可以免费建站啊免费建网站
  • 企业网站虚拟空间未来最紧缺的十大专业
  • 怎么黑入网站装修房子什么风格最耐看
  • 笨笨网站建设专家网站源码后台
  • 企业网站优化报告山东省城乡建设部网站首页
  • 眼镜商城网站建设方案天元建设集团有限公司承兑
  • 兴仁县城乡建设局网站广东东莞是几线城市
  • 专业做网站建设公司appache wordpress
  • 合肥市建设厅网站网站建设用宝塔
  • 区块链网站建设哪里网站建设好
  • 山东省建设资格中心网站wordpress邮箱内容怎么修改
  • 旅行用品东莞网站建设网站模板psd素材
  • 深圳建设局网站投诉电话客户关系管理系统简称
  • 广州中小企业网站制作如何备份wordpress站点
  • 什么叫网站降权找个美工做淘宝网站需要多少钱
  • 长春做网站优化价格网站的做网站公司哪家好
  • 网站建设领域文章东莞seo网络营销
  • 温州高端模板建站廊坊网站快照优化公司