function Super(){
this.colors=["1","2","3"];
}
Super.prototype.sayName = function (){
console.log(this.colors);
};
function Sub(){
Super.call(this); //构造函数继承 问题:查找不到原型链上的属性 (第二次调用父类构造函数)
}
//Sub.prototype = new Super(); //原型继承 问题:引用类型值(比如数组)所有实例共享 (第一次调用父类构造函数)
/*采用中间值
function temp(){}
temp.prototype=Super.prototype;
Sub.prototype=new temp();
*/
//或者(代码中尽量不要出现__proto__)
//Sub.prototype.__proto__=Super.prototype;
Object.setPrototypeOf(Sub.prototype,Super.prototype);
Object.setPrototypeOf(Sub,Super); //为了继承类的静态属性或方法
let instance1 = new Sub();
instance1.colors.push("4");
instance1.sayName();
let instance2 = new Sub();
instance2.sayName();