js對(duì)象的三種繼承方式
轉(zhuǎn)載 2017年06月23日 15:07:56 13300
一皿哨,js中對(duì)象繼承對(duì)象的
js中有三種繼承方式
1.js原型(prototype)實(shí)現(xiàn)繼承
復(fù)制代碼 代碼如下:
<SPAN style="BACKGROUND-COLOR: #ffffff"><SPAN style="FONT-SIZE: 18px"><html>
<body>
<script type="text/javascript">
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.sayHello=function(){
alert("使用原型得到Name:"+this.name);
}
var per=new Person("馬小倩",21);
per.sayHello(); //輸出:使用原型得到Name:馬小倩
function Student(){}
Student.prototype=new Person("洪如彤",21);
var stu=new Student();
Student.prototype.grade=5;
Student.prototype.intr=function(){
alert(this.grade);
}
stu.sayHello();//輸出:使用原型得到Name:洪如彤
stu.intr();//輸出:5
</script>
</body>
</html></SPAN></SPAN>
2.構(gòu)造函數(shù)實(shí)現(xiàn)繼承
復(fù)制代碼 代碼如下:
<SPAN style="FONT-SIZE: 18px"><html>
<body>
<script type="text/javascript">
function Parent(name){
this.name=name;
this.sayParent=function(){
alert("Parent:"+this.name);
}
}
function Child(name,age){
this.tempMethod=Parent;
this.tempMethod(name);
this.age=age;
this.sayChild=function(){
alert("Child:"+this.name+"age:"+this.age);
}
}
var parent=new Parent("江劍臣");
parent.sayParent(); //輸出:“Parent:江劍臣”
var child=new Child("李鳴",24); //輸出:“Child:李鳴 age:24”
child.sayChild();
</script>
</body>
</html></SPAN>
3.call , apply實(shí)現(xiàn)繼承
復(fù)制代碼 代碼如下:
<SPAN style="FONT-SIZE: 18px"><html>
<body>
<script type="text/javascript">
function Person(name,age,love){
this.name=name;
this.age=age;
this.love=love;
this.say=function say(){
alert("姓名:"+name);
}
}
//call方式
function student(name,age){
Person.call(this,name,age);
}
//apply方式
function teacher(name,love){
Person.apply(this,[name,love]);
//Person.apply(this,arguments); //跟上句一樣的效果,arguments
}
//call與aplly的異同:
//1,第一個(gè)參數(shù)this都一樣,指當(dāng)前對(duì)象
//2,第二個(gè)參數(shù)不一樣:call的是一個(gè)個(gè)的參數(shù)列表鼓黔;apply的是一個(gè)數(shù)組(arguments也可以)
var per=new Person("武鳳樓",25,"魏熒屏"); //輸出:“武鳳樓”
per.say();
var stu=new student("曹玉",18);//輸出:“曹玉”
stu.say();
var tea=new teacher("秦杰",16);//輸出:“秦杰”
tea.say();
</script>
</body>
</html></SPAN>