利用javascript中的call实现继承_javascript技巧
昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来.
实现setTimeout传object对象
看以下代码实现向里面的function 传参数
<script> <BR>var _st = window.setTimeout; <BR>window.setTimeout = function(fRef, mDelay) { <BR> if(typeof fRef == 'function'){ <BR> var argu = Array.prototype.slice.call(arguments,2); <BR> var f = (function(){ fRef.apply(null, argu); }); <BR> return _st(f, mDelay); <BR> } <BR> return _st(fRef,mDelay); <BR>} <BR>function test(x){ <BR> alert(x); <BR>} <BR>window.setTimeout(test,1000,'fason'); <BR></script>
call方法JScript参考中的说明:调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是没有示例
apply方法JScript参考中的说明:应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,argArray]])
实际上这两个的作用几乎是相同的,要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg参数可以是变量,而apply([thisObj[,argArray]])中的参数为数组集合。
今早又看到一篇利用call实现继承的例子.呵呵..也一并贴出来.这个例子比较简单.就算是由浅入深吧
<script> <br><br> function father(){//父类 <br><br> var self=this; //私有变量,子类里不会继承! <br><br> var var_private="private variable"; //私有变量 <br><br> this.var_public="public variable"; //公有变量 <br><br> <br><br> this.author="xling"; <br><br> this.test=function(msg){ //公有方法 <br><br> alert("该方法位于父类 :" + msg + "\n" + self.author); <br><br> } <br><br> <br><br> var test2=function(){ //私有方法,子类不能调用 <br><br> alert("这个方法是父类的私有方法"); <br><br> } <br><br> } <br><br> <br><br> function father2(){ <br><br> this.email="xlingFairy#hotmail.com"; <br><br> } <br><br> <br><br> function suber(){//子类 <br><br> father.call(this);//通过这一句来继承父类(father)类的可见变量及方法(this) <br><br> } <br><br> <br><br> function sun(){ <br><br> suber.call(this); <br><br> father2.call(this);//和上面的一句放在一起,實現多重繼承!爽啊! <br><br> } <br><br> <br><br> var mySuber=new suber(); <br><br> mySuber.test("参数是从子类的实例里传入的"); <br><br> //mySuber.test2(); //这一句会发生错误码,因为test2是父类的私有类 <br><br> alert("父类的私有变量,子类不能读取:" + mySuber.var_private); <br><br> alert("父类的公有变量,子类可以读取" + mySuber.var_public); <br><br> <br><br> var mySun=new sun(); <br><br> mySun.test("这个是从孙子级的实例里传入的参数"); <br><br> alert("父类的私有变量,子类不能读取:" + mySun.var_private); <br><br> alert("父类的公有变量,子类可以读取" + mySun.var_public); <br><br> alert(mySun.email); <br><br></script>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...

探索前端中类似VSCode的面板拖拽调整功能的实现在前端开发中,如何实现类似于VSCode...
