浏览 4549 次
锁定老帖子 主题:javascript学习五
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
||
---|---|---|
作者 | 正文 | |
发表时间:2011-12-12
最后修改:2011-12-26
<script type="text/javascript"> //使用call实现继承 function parent(username){ this.username=username; this.sayHello=function(){ alert(this.username); } } function child(username,password){ parent.call(this,username); this.password=password; this.sayWord=function(){ alert(this.password); } } var p=new parent("hello"); var c=new child("word","123"); p.sayHello(); c.sayHello(); c.sayWord(); </script> apply方法方式: <script type="text/javascript"> //apply方法实现对象继承 function parent(username){ this.username=username; this.sayHello=function(){ alert(this.username); } } function child(username,password){ parent.apply(this,new Array(username)); this.password=password; this.sayWord=function(){ alert(this.password); } } var p=new parent("hello"); var c=new child("word","123"); p.sayHello(); c.sayHello(); c.sayWord(); </script> 原型链方式:无法给构造函数传递参数 <script type="text/javascript"> //使用原型链(prototype chain)实现对象的继承 function parent(){} parent.prototype.hello="hello"; parent.prototype.sayHello=function(){ alert(this.hello); } function child(){} child.prototype=new parent(); child.prototype.word="word"; child.prototype.sayWord=function(){ alert(this.word); } var p=new parent(); var c=new child(); p.sayHello(); c.sayHello(); c.sayWord(); </script> 混合方式:(推荐使用) <script type="text/javascript"> //使用混合方式实现对象的继承 function parent(hello){ this.hello=hello; } parent.prototype.sayHello=function(){ alert(this.hello); } function child(hello,word){ //实现属性的继承 parent.call(this,hello); this.word=word; } //实现方法的继承 child.prototype=new parent(); child.prototype.sayWord=function(){ alert(this.word); } var p=new parent("hello"); var c=new child("word","123"); p.sayHello(); c.sayHello(); c.sayWord(); </script> 学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||
返回顶楼 | ||
发表时间:2011-12-18
第三种方式有一点多此一举吧,parent.call(this,hello); 和child.prototype=new parent();都是实现对象的继承?不知楼主是否这样认为!
|
||
返回顶楼 | ||
发表时间:2011-12-19
weilingfeng98 写道 第三种方式有一点多此一举吧,parent.call(this,hello); 和child.prototype=new parent();都是实现对象的继承?不知楼主是否这样认为! 混合方式的parent.call(this,hello)是为了让child也拥有parent的parent属性,属性是实例独立的;prototype是为了继承parent的sayHello方法,方法是公用一份的。 |
||
返回顶楼 | ||
发表时间:2011-12-19
最后修改:2011-12-19
08284008 写道
学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。 为什么你知道的我都知道,我知道的比你还多,我却一直以为自己是新手,没有掌握到javascript核心? |
||
返回顶楼 | ||
发表时间:2011-12-19
知识点知道了估计也就是能应付下面试,实际工作中写出优良的代码那才是真本事。我觉得应该研究一下自己熟悉的js库,比如Jquery等,学习牛人的代码。
|
||
返回顶楼 | ||
发表时间:2011-12-19
如果我是面试官,我肯定会问你第一第二种用的什么原理,实现的继承
|
||
返回顶楼 | ||
发表时间:2011-12-24
rainsilence 写道 如果我是面试官,我肯定会问你第一第二种用的什么原理,实现的继承
是什么原理?不就是通过改变this作用域实现的吗? |
||
返回顶楼 | ||
发表时间:2011-12-26
黑白两相望 写到
08284008 写道 Js代码 1. 学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。 学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。 为什么你知道的我都知道,我知道的比你还多,我却一直以为自己是新手,没有掌握到javascript核心? 这也许是我自认为的,我也不知道javascript还有那些知识啊,希望赐教。 |
||
返回顶楼 | ||
发表时间:2011-12-26
shengren0 写到:
是啊,学习这些js库,需要有javascript的基础啊 |
||
返回顶楼 | ||