Es5中的类和静态方法 继承

 

Es5中的类和静态方法 继承(原型链继承、对象冒充继承、原型链+对象冒充组合继承)

 

// 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);

 

转载于:https://www.cnblogs.com/zzxuan/p/9366717.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值