SOURCE

// 1、原型链继承
// function Person(name,sex){
//     this.name = 'person'
//     this.sex = 'person'
//     this.color=['pink','red','black']
// }
// function Male(){
// }
// Male.prototype = new Person();
// Male.prototype.constructor = Male;
// let m1 = new Male()
// let m2 = new Male()

// //原型链继承 : 
// //问题:1、作为原型对象的构造函数的引用对象是共享的
// //2、没有办法通过构造函数传参数
// console.log(m1.color)
// m1.color.push('aaa')
// console.log(m1.color)
// console.log(m2.color)

//《----------------------》
//2、构造函数继承(经典继承)
// function Person(name,sex){
//     this.name = 'person'
//     this.sex = 'person'
// }
// function Male(){
//     Person.call(this)
//     this.sex = 'male'
// }
//经典继承 console.log(m1)


//《----------------------》
//3、组合继承:1、2的结合
// function Person(name,sex){
//     this.name = 'person'
//     this.sex = 'person'
//     this.color=['pink','red','black']
// }
// function Male(){
//     Person.call(this);
// }
// Male.prototype = new Person();
// Male.prototype.constructor = Male;


// let m1 = new Male()
// let m2 = new Male()
// console.log(m1.color)
// m1.color.push('aaa')
// console.log(m1.color)
// console.log(m2.color)

//4、原型式继承
//实际上就是Object.create的实现,将传入的对象作为创建的对象的原型
//问题也是引用类型互相影响的问题
// function Person(name,sex){
//     this.name = 'person'
//     this.sex = 'person'
//     this.color=['pink','red','black']
// }
// function createSon(o){
//     function Son(){
//         this.name='son'
//     }
//     Son.prototype = o;
//     return new Son();
// }
// let p =new Person()
// let son1 = createSon(p);
// let son2 = createSon(p);
// console.log(son1.name)
// son1.color.push('sss')
// console.log(son1.color)
// console.log(son2.color)

// let son3 = createSon(new Person());
// let son4 = createSon(new Person());
// console.log(son3.color)
// son3.color.push('sss')
// console.log(son3.color)
// console.log(son4.color)

//5、寄生继承
// function createobj(o){
//     let clone = Object.create(o);
//     clone.hi =function(){
//         console.log('hi')
//     }
//     return clone
// }
// function Person(name,sex){
//     this.name = 'person'
//     this.sex = 'person'
//     this.color=['pink','red','black']
// }

// let p1 = createobj(new Person());
// p1.hi()

// 6、寄生组合继承
// function object(o){
//     function F(){}
//     F.prototype = o;
//     return new F();
// }
// function prototype(child,parent){
//     let prototype = object(parent.prototype);
//     console.log(object(parent.prototype),'object(parent.prototype)')
//     prototype.constructor = child;
//     child.prototype = prototype;
// }
// function Child(){
//     this.name='child'
// }
// function Parent(){
//     this.name='parent'
//     this.a='a'
// }
// prototype(Child,Parent);
// let c1 = new Child();
// console.log(c1.a)
console 命令行工具 X clear

                    
>
console