论坛首页 Web前端技术论坛

javascript学习五

浏览 4549 次
精华帖 (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的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。

 

   发表时间:2011-12-18  
第三种方式有一点多此一举吧,parent.call(this,hello); 和child.prototype=new parent();都是实现对象的继承?不知楼主是否这样认为!
0 请登录后投票
   发表时间:2011-12-19  
weilingfeng98 写道
第三种方式有一点多此一举吧,parent.call(this,hello); 和child.prototype=new parent();都是实现对象的继承?不知楼主是否这样认为!

混合方式的parent.call(this,hello)是为了让child也拥有parent的parent属性,属性是实例独立的;prototype是为了继承parent的sayHello方法,方法是公用一份的。
0 请登录后投票
   发表时间:2011-12-19   最后修改:2011-12-19
08284008 写道
 学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。

 为什么你知道的我都知道,我知道的比你还多,我却一直以为自己是新手,没有掌握到javascript核心?

0 请登录后投票
   发表时间:2011-12-19  
知识点知道了估计也就是能应付下面试,实际工作中写出优良的代码那才是真本事。我觉得应该研究一下自己熟悉的js库,比如Jquery等,学习牛人的代码。
0 请登录后投票
   发表时间:2011-12-19  
如果我是面试官,我肯定会问你第一第二种用的什么原理,实现的继承
0 请登录后投票
   发表时间:2011-12-24  
rainsilence 写道
如果我是面试官,我肯定会问你第一第二种用的什么原理,实现的继承


是什么原理?不就是通过改变this作用域实现的吗?
0 请登录后投票
   发表时间:2011-12-26  
黑白两相望 写到
08284008 写道
Js代码 
1. 学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。 
学到这里,javascript的核心应该已经学完了,可是自己感觉没什么进步,不知道大家是怎么在学习啊,希望大家能指教指教小弟。 为什么你知道的我都知道,我知道的比你还多,我却一直以为自己是新手,没有掌握到javascript核心?

这也许是我自认为的,我也不知道javascript还有那些知识啊,希望赐教。
0 请登录后投票
   发表时间:2011-12-26  
shengren0 写到:
知识点知道了估计也就是能应付下面试,实际工作中写出优良的代码那才是真本事。我觉得应该研究一下自己熟悉的js库,比如Jquery等,学习牛人的代码。


是啊,学习这些js库,需要有javascript的基础啊
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics