<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
// es5裏面的類
//1.最簡單的類
// function Person(){
// this.name='張三';
// this.age=20;
// }
// var p=new Person();
// alert(p.name);
//2、構造函數和原型鏈裏面增加方法
// function Person(){
// this.name='張三'; /*屬性*/
// this.age=20;
// this.run=function(){
// alert(this.name+'在運動');
// }
// }
// //原型鏈上面的屬性會被多個實例共享 構造函數不會
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// var p=new Person();
// // alert(p.name);
// // p.run();
// p.work();
//3類裏面的靜態方法
// function Person(){
// this.name='張三'; /*屬性*/
// this.age=20;
// this.run=function(){ /*實例方法*/
// alert(this.name+'在運動');
// }
// }
// Person.getInfo=function(){
// alert('我是靜態方法');
// }
// //原型鏈上面的屬性會被多個實例共享 構造函數不會
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// var p=new Person();
// p.work();
// //調用靜態方法
// Person.getInfo();
// 4、es5裏面的繼承 對象冒充實現繼承
// function Person(){
// this.name='張三'; /*屬性*/
// this.age=20;
// this.run=function(){ /*實例方法*/
// alert(this.name+'在運動');
// }
// }
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// //Web類 繼承Person類 原型鏈+對象冒充的組合繼承模式
// function Web(){
// Person.call(this); /*對象冒充實現繼承*/
// }
// var w=new Web();
// // w.run(); //對象冒充可以繼承構造函數裏面的屬性和方法
// w.work(); //對象冒充可以繼承構造函數裏面的屬性和方法 但是沒法繼承原型鏈上面的屬性和方法
// 5、es5裏面的繼承 原型鏈實現繼承
// function Person(){
// this.name='張三'; /*屬性*/
// this.age=20;
// this.run=function(){ /*實例方法*/
// alert(this.name+'在運動');
// }
// }
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// //Web類 繼承Person類 原型鏈+對象冒充的組合繼承模式
// function Web(){
// }
// Web.prototype=new Person(); //原型鏈實現繼承
// var w=new Web();
// //原型鏈實現繼承:可以繼承構造函數裏面的屬性和方法 也可以繼承原型鏈上面的屬性和方法
// //w.run();
// w.work();
// 6、 原型鏈實現繼承的 問題?
// function Person(name,age){
// this.name=name; /*屬性*/
// this.age=age;
// this.run=function(){ /*實例方法*/
// alert(this.name+'在運動');
// }
// }
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// var p=new Person('李四',20);
// p.run();
// function Person(name,age){
// this.name=name; /*屬性*/
// this.age=age;
// this.run=function(){ /*實例方法*/
// alert(this.name+'在運動');
// }
// }
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// function Web(name,age){
// }
// Web.prototype=new Person();
// var w=new Web('趙四',20); //實例化子類的時候沒法給父類傳參
// w.run();
// // var w1=new Web('王五',22);
//7.原型鏈+對象冒充的組合繼承模式
// function Person(name,age){
// this.name=name; /*屬性*/
// this.age=age;
// this.run=function(){ /*實例方法*/
// alert(this.name+'在運動');
// }
// }
// Person.prototype.sex="男";
// Person.prototype.work=function(){
// alert(this.name+'在工作');
// }
// function Web(name,age){
// Person.call(this,name,age); //對象冒充繼承 實例化子類可以給父類傳參
// }
// Web.prototype=new Person();
// var w=new Web('趙四',20); //實例化子類的時候沒法給父類傳參
// // w.run();
// w.work();
// // var w1=new Web('王五',22);
//8、原型鏈+對象冒充繼承的另一種方式
function Person(name, age) {
this.name = name;
/*屬性*/
this.age = age;
this.run = function () { /*實例方法*/
alert(this.name + '在運動');
}
}
Person.prototype.sex = "男";
Person.prototype.work = function () {
alert(this.name + '在工作');
}
function Web(name, age) {
Person.call(this, name, age); //對象冒充繼承 可以繼承構造函數裏面的屬性和方法、實例化子類可以給父類傳參
}
Web.prototype = Person.prototype;
var w = new Web('趙四', 20); //實例化子類的時候沒法給父類傳參
w.run();
// w.work();
// var w1=new Web('王五',22);
</script>
</head>
<body>
</body>
</html>