第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > [原创] JS 继承详解。欢迎拍砖

[原创] JS 继承详解。欢迎拍砖

时间:2021-02-20 06:14:21

相关推荐

[原创] JS 继承详解。欢迎拍砖

最近迷上了JS 没办法 搞WEB离不开这东西 ,所以如果哪位仁兄还说JS无用论 还请绕道

过开发积累的经验 加上书本上的知识 (也算是理论与实际相结合吧)总结此文 也算是自己学习阶段的一份总结吧 !希望给广大JS 爱爱好者一点帮助

废话不多说 JS 继承一般分为3种 今天先说第一种类式继承

首先来说JS 本事是没有类的概念的 。JS 的类实际就是function 对象 先上码

<script>function Test(name){this.name = name;}Test.prototype.fun = function(){alert(0)}testInc = new Test('111');testInc.fun();console.dir(testInc)</script>

首先,我们定义了functionTest 我们可以把这个当成一个类 类似 class Test{}

然后我们定义了类的一个属性name ,给这个方法(类)的prototype属性定义了一个方法 //alert(0)

剩下的动作相信无论搞什么语言的同学都知道了。

介绍下prototype 属性。 当你定义了一个方法的时候(也可以像我们这样把他当成类) 方法都会创建一个prototype属性 用来返回对象类型原想的引用的

具体是都有什么有兴趣的同学可以console.dir(Test); 在chrome或者fireFox上看下

通过给Function 的prototype 添加方法的过程 我们可以实现动态的 给类添加方法 并且在实例中调用他

好了,准备工作完毕 然后我们创建一个子类 实现JS继承 首先JS 是没有extend 这种关键字的。(自定义的除外)

但是根据上面的思路我们可以给一个类 添加 另一个类的属性 和方法 实现继承关系(并不是真的继承)代码如下

<script>function Test(name){this.name = name;}Test.prototype.fun = function(){alert('my name is '+this.name);}function subTest(name,age){Test.call(this,name); //实现属性继承this.age = age}subTest.prototype = new Test(); //实现方法继承subTest.prototype.constructor = subTest;subTest.prototype.subfun = function (){alert('my name is'+this.name+' and my age is '+this.age)}subTestIns = new subTest('xiaojiang','24');subTestIns.fun();//my name is testNamesubTestIns.subfun(); //my name is testName and my age is testAge</script>

call调用一个对象的一个方法,以另一个对象替换当前对象

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

参数

thisObj

可选项。将被用作当前对象的对象。

arg1, arg2, , argN

可选项。将被传递方法参数序列。 同样的方法还有 apply 只是把call后面的参数改成 Array 调用罢了

这样可以使 子类获得父类的属性name;

再把父类的方法附加给子类 这样就实现了JS 的类式继承。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。