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

网站建设企业网站怎么做网站广告设计

网站建设企业网站怎么做,网站广告设计,网站开发颜色选择器,知名网站开发多少钱分享一个基础面试题---手写call 手写call笔记第一步第二步第三步 手写call笔记 call()#xff1a;在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法。 let foo {value:1 }; function bar(){console.log(this.value); } bar.call(foo);//1注意两点… 分享一个基础面试题---手写call 手写call笔记第一步第二步第三步 手写call笔记 call()在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法。 let foo {value:1 }; function bar(){console.log(this.value); } bar.call(foo);//1注意两点 call改变了this的指向指向到foo;bar 函数执行了 第一步 上述方式等同于 let foo {value:1;bar:function(){console.log(this.value)} }; foo.bar();//1这个时候this就指向了foo,但是这样却给foo对象本身添加了一个属性所以我们用delete再删除它即可。 所以我们模拟的步骤可以分为 将函数设为对象的属性执行该函数删除该函数 以上个例子为例就是 //第一步 //fn 是对象的属性名反正最后也要删除它所以起什么名字都可以。 foo.fn bar //第二步 foo.fn() //第三步 delete foo.fn根据上述思路提供一版 //第一版 //将foo作为context参数传递 Function.prototype.call2 function(context){//首先要获取调用call的函数用this可以获取//将函数设为对象的属性context.fn this;//执行该函数context.fn();//删除该函数delete context.fn; }第二步 call除了可以指定this还可以指定参数 var foo {value:1 }; function bar(name,age){console.log(name);console.log(age);console.log(this.value); } bar.call(foo,ken,18);可以从Arguments对象中取值取出第二个到最后一个参数然后放到一个数组里。 上述代码的Arguments中取第二个到最后一个参数。 //以上个例子为例此时的arguments为 // arguments { // 0:foo, // 1:ken, // 2:18, // length:3 //} //因为arguments是类数组对象所以可以用for循环 var args []; for(var i 1,len arguments.length;ilen;i){args.push(arguments[i]); } //执行后args 为[arguments[1],arguments[2],arguments[3]]接下来使用eval拼接成一个函数 eval(context.fn(args))考虑到目前大部分浏览器在console中限制eval的执行也可以使用rest 此处代码为 //第二版 Function.prototype.call2 function(context){context.fn this;let arg [...arguments].slice(1);context.fn(...arg);delete context.fn; } //测试一下 var foo {value:1 }; function bar(name,age){console.log(name);console.log(age);console.log(this.value); } bar.call2(foo,ken,18) //ken //18 //1第三步 this参数可以传null,当为null的时候视为指向window 举个例子 var value 1; function bar(){console.log(this.value); } bar.call(null);//1针对函数可以实现返回值 var obj {value:1 }; function bar(name,age){return{value:this.value,name:name,age:age} } console.log(bar.call(obj,ken,18)); //Object{ // value:1, // name:ken, // age:18 //}第三版 Function.prototype.call3function(context){//1.this为null也可以写为context ?? window 或者 contextcontext??windowvar context context || window;context.fn this;let arg [...arguments].slice(1)let result context.fn(...arg)delete context.fn//2.有返回值return result } //测试一下 var value 2; var obj {value:1 } function bar(name,age){console.log(this.value);return{value:this.value,name:name,age:age} } bar.call3(null);//2 console.log(bar.call3(obj,ken,18));//1 //Object{ // value:1, // name:ken, // age:18 //}这边给出的简化写法 Function.prototype.call3 function(context,..args){//判断是否是undefined和nullif (typeof context undefined || context null){context window}//每个从Symbol()返回的symbol值都是唯一的let fnSymbol Symbol()context[fnSymbol] this//入参...args [...arguments].slice(1);let fn context[fnSymbol](...args)//删除目的是不污染原来数据delete context[fnSymbol]return fn }可能会有新手宝宝们看完觉得还是很晦涩可以动手写一遍试试不行再多写两遍好记性不如烂键盘脑子再快也不如肌肉记忆哈哈哈~ 当然也可以留言讨论啦~
http://www.yutouwan.com/news/212242/

相关文章:

  • 建设银行北京分行网站邯郸建设局网站资质申报
  • 网站建设新闻中心呼和浩特网站推广公司
  • 免费cms建站系统有哪些学院网站设计模板
  • 福州seo推广优化杭州百度人工优化
  • 工信部网站 备案时间dtcms网站开发教程
  • 做电子商务网站免费的行情网站ifind是
  • 宁波市住房与城乡建设部网站如何零基础做网站
  • 网页设计公司建网站网站设计苏州公司网站建设找哪家
  • 网站建设晋icp备如何做亚马逊备案的网站
  • 腾讯空间个人认证 企业认证 网站认证哪种功能用途最齐全??游戏软件开发流程
  • 山东淄博网站建设微信公众号网站建设费
  • 注册的网站医疗网站咨询源码
  • 舟山建设网站公司微信小程序怎么关闭防沉迷
  • 十堰微网站建设多少钱网页设计模板html代码用户评论
  • 做票据业务的p2p网站北京网站建设公司分享网站改版注意事项
  • 内蒙古住房和城乡建设厅网站 工程建设管理把做的网站发布打万维网上
  • 企业网站seo方案最近军事新闻大事
  • 毕业设计 建设网站网站建设岗位风险防控
  • 南京专业网站制作免费下载代码的网站
  • 公司高端网站设计公司临海市建设规划局网站
  • 在线免费看电视剧的网站网站建设服务有哪些
  • 门户网站静态页面软件公司主要做哪些
  • 定陶住房和城乡建设局网站怎么实现网站注册页面
  • 有哪些网站的搜索引擎网站301如何做
  • 汽车手机网站制作性价比高的域名备案加急
  • 广西专业网站建设做印刷厂网站
  • 买完域名接下来怎么弄seo 新旧网站 两个域名
  • 做宣传册模板的网站wamp建设网站大致步骤
  • 做教案找资料有哪些网站asp网站优缺点
  • seo网站推广电话做网站都要掌握什么