为了账号安全,请及时绑定邮箱和手机立即绑定

大家帮我讲解下call的实际运用机制.

大家帮我讲解下call的实际运用机制.

慕村9548890 2018-12-07 11:35:50
fn.call(this,this.elements[i]); //..虽然看了call的手册,这里还是难于理解而且这段代码中为什么还要这样写call呢?上面代码是不是相当于:function(el){el.style[prop] = val;}.call(this,this.elements[i]);谁详细的讲解一下这个的执行流程? <div id="box">mybox</div> (function(){ function _$(els){ this.elements = []; for(var i=0, len = els.length; i<len; i++){ var element = els[i]; if(typeof element === "string"){ element = document.getElementById(element); } this.elements.push(element); } } _$.prototype = { each : function(fn){ for(var i=0, len = this.elements.length; i<len; i++){ fn.call(this,this.elements[i]); console.log(this.elements[i]) } }, setStyle : function(prop,val){ this.each(function(el){ console.log(el) el.style[prop] = val; }) } } window.$ = function(){ return new _$(arguments); } })(); $("box").setStyle("color","red")    
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

在没有call之前JS中继承主要用对象冒充的方式实现,后来在新版的JS中直接提供了call方法来替换此功能,参考这里:

《JavaScript高级程序设计》阅读笔记(十四):继承机制的实现

查看完整回答
反对 回复 2018-12-24
?
MM们

TA贡献1886条经验 获得超2个赞

与apply差不多,去看看权威指南,很详细的。只是增加一次函数内的调用域。

查看完整回答
反对 回复 2018-12-24
  • 2 回答
  • 0 关注
  • 491 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信