js 4种方式实现继承.
2011-11-22 16:05
579 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <script type="text/javascript"><!-- //冒充对象 /*function Parent(username) { this.username=username; this.sayHello=function() { alert(this.username); } } function Child(username,password) { this.method=Parent; this.method(username); delete this.method; this.password=password; this.sayWorld=function() { alert(this.password); } } var parent=new Parent("zhangsan"); var child=new Child("lisi","1234"); parent.sayHello(); child.sayHello(); child.sayWorld(); */ //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.sayWorld=function() { alert(this.password); } } var parent=new Parent("zhangsan"); var child=new Child("lisi","1234"); parent.sayHello(); child.sayHello(); child.sayWorld(); */ //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.sayWorld=function() { alert(this.password); } } var parent=new Parent("zhangsan"); var child=new Child("lisi","1234"); parent.sayHello(); child.sayHello(); child.sayWorld(); */ //prototype chain /* function Parent() {} Parent.prototype.name="zhangsan"; Parent.prototype.sayHello=function() { alert(this.name); } function Child() {} Child.prototype=new Parent(); Child.prototype.world="world"; Child.prototype.sayWorld=function() { alert(this.world); } var child=new Child(); child.sayHello(); child.sayWorld(); */ //混合方式实现对象的继承(推荐) function Parent(name) { this.name=name; } Parent.prototype.sayHello=function() { alert(this.name); } function Child(name,world) { Parent.call(this,name); this.world=world; } Child.prototype=new Parent(); Child.prototype.sayWorld=function() { alert(this.world); } var child=new Child("name","world"); child.sayHello(); child.sayWorld(); </script> <body> </body> </html>
相关文章推荐