javascript 中 call 的行使要领
javaScript 中的 call() 是一个奇奥的要领,但也是一个让人疑惑的要领,先看一下官方的表明: call 要领 请参阅 应用于:Function 工具 要求 版本 5.5 挪用一个工具的一个要领,以另一个工具替代当前工具。 call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 假如没有提供 thisObj 参数,那么 Global 工具被用作 thisObj。 乍一看,很轻易把人看迷胡,先做一些简朴的声名 举一个详细的例子 add.call(sub,3,1); 这个例子中的意思就是用 add 来替代 sub,add.call(sub,3,1) == add(3,1) ,以是运行功效为:alert(4); // 留意:js 中的函数着实是工具,函数名是对 Function 工具的引用。 function Class1() this.showNam = function() function Class2() var c1 = new Class1(); c1.showNam.call(c2); 留意,call 的意思是把 c1 的要领放到c2上执行,原本c2是没有showNam() 要领,此刻是把c1 的showNam()要领放到 c2 上来执行,以是this.name 应该是 class2,执行的功效就是 :alert("class2"); 怎么样,认为故意思了吧,可以让a工具来执行b工具的要领,这是java措施员所不敢想的。尚有更风趣的,可以用 call 来实现担任 function Class1() function Class2() var c2 = new Class2(); c2.showTxt("cc"); 这样 Class2 就担任Class1了,Class1.call(this) 的 意思就是行使 Class1 工具取代this工具,那么 Class2 中不就有Class1 的全部属性和要领了吗,c2 工具就可以或许直接挪用Class1 的要领以及属性了,执行功效就是:alert(“cc”); 对的,就是这样,这就是 javaScript 怎样来模仿面向工具中的担任的,还可以实现多重担任。 function Class10() function Class11()
很简朴,行使两个 call 就实现多重担任了 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |