// es5中的类
// a.最简单的类
// function Person(){
// this.name = 'zhangsan';
// this.age = 18;
// }
// var p = new Person();
// console.log(p.anme);
// b.构造函数和原型链里面增加方法
// function Person(){
// this.name = 'zhangsan';
// this.age = 18;
// this.run = function(){
// console.log(this.name+'在run');
// }
// }
// 原型链上面的属性会被多个实例共享 构造函数不会
// Person.prototype.sex = '男'; /* 属性 */
// Person.prototype.work = function(){ /* 实例方法 */
// console.log(this.name+'在work');
// }
// var p = new Person();
// p.run();
// p.work();
// c.类里面的静态方法
// function Person(){
// this.name = 'zhangsan';
// this.age = 18;
// this.run = function(){
// console.log(this.name+'在run');
// }
// }
// Person.getGo = function(){
// console.log('我是静态方法')
// }
// Person.getGo(); /*调用静态方法 */
// d.es5里面的继承
// function Person(){
// this.name = 'zhangsan';
// this.age = 18;
// this.run = function(){
// console.log(this.name+'在run');
// }
// }
// Person.prototype.sex = '男'; /* 属性 */
// Person.prototype.work = function(){ /* 实例方法 */
// console.log(this.name+'在work');
// }
// // 定义一个 web类继承 Person类 (原型链+对象冒充的组合模式)
// function Web(){
// Person.call(this) /* 对象冒充实现继承*/
// }
// var w = new Web();
// w.run(); //对象冒充可以继承构造函数里面的属性和方法
// w.work(); //但是不能继承原型链上边的属性和方法
// e.es5里的继承 原型链实现继承
// function Person(){
// this.name = 'zhangsan';
// this.age = 18;
// this.run = function(){
// console.log(this.name+'在run');
// }
// }
// Person.prototype.sex = '男'; /* 属性 */
// Person.prototype.work = function(){ /* 实例方法 */
// console.log(this.name+'在work');
// }
// // 定义一个 web类继承 Person类 (原型链+对象冒充的组合模式)
// function Web(){}
// //原型链实现继承:可以继承构造函数里面的方法和属性 也可以继承原型链上边的属性和方法
// Web.prototype = new Person();
// var w = new Web();
// w.work(); //
// f.原型链实现继承的 问题?
// function Person(name,age){
// this.name = name;
// this.age = age;
// this.run = function(){
// console.log(this.name+'在run');
// }
// }
// Person.prototype.sex = '男'; /* 属性 */
// Person.prototype.work = function(){ /* 实例方法 */
// console.log(this.name+'在work');
// }
// // 定义一个 web类继承 Person类 (原型链+对象冒充的组合模式)
// function Web(name,age){}
// //原型链实现继承:可以继承构造函数里面的方法和属性 也可以继承原型链上边的属性和方法
// Web.prototype = new Person();
// var w = new Web('xiaolin',18); //实例化子类的时候不能给父类传参
// var w1 = new Web('xiaohong',17);
// w.work(); //undefined在work
// g.原型链+构造函数 的组合继承模式
function Person(name,age){
this.name = name;
this.age = age;
this.run = function(){
console.log(this.name+'在run');
}
}
Person.prototype.sex = '男'; /* 属性 */
Person.prototype.work = function(){ /* 实例方法 */
console.log(this.name+'在work');
}
// 定义一个 web类继承 Person类 (原型链+对象冒充的组合模式)
function Web(name,age){
Person.call(this,name,age) //对象冒充继承 实例化子类可以给父类传参
}
//原型链实现继承:可以继承构造函数里面的方法和属性 也可以继承原型链上边的属性和方法
Web.prototype = new Person(); //或者 Web.prototype = Person.prototype;
var k = new Web('小米',20);
k.run(); //小米在run
k.work(); //小米在work