/*************************** * *Js中父子“类”,子继承父,有些资料上说 *要实现继承,走三步:1. 在子类Sub中添 *加Super.call(this,arg); 2. 父的原型赋给 *子; 3. 父的构造函数赋给子; 这样就完成 *继承。这样子就可以用父的所有定义。 * ***************************/ function Super(){ this.x = 0; this.y = 0; this.method = function(){ //TO DO } }; function Sub(){ Super.call(this); //1 }; Sub.prototype = Object.create(Super.prototype); //2 Sub.prototype.constructor =Sub; /*3 这一步不理解?为何不是 Sub.prototype.constructor =Super.prototype.constructor; ? */
http://www.cnblogs.com/humin/p/4556820.html
你好,帮我看看这段代码要做怎么样的修改,才能console features为[‘eat’],现在为空。
function Animal(name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function() { console.log(this.name + '正在睡觉!'); } //实例引用属性 this.features = []; } function Cat(name){ Animal.call(this); this.name = name || "Bruce.Yin"; }; (function(){ function Super(){}; Super.prototype = Animal.prototype; Cat.prototype = new Super(); })(); var aHua = new Cat(); var aHei = new Cat(); aHua.features.push('eat'); console.log(aHua.sleep()); //Bruce.Yin正在睡觉! console.log(aHei.features); //[]
@Coca-code:
function Animal(name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function() { console.log(this.name + '正在睡觉!'); } //实例引用属性 //this.features = []; } function Cat(name){ Animal.call(this); this.name = name || "Bruce.Yin"; }; (function(){ function Super(){}; Super.prototype = Animal.prototype; Cat.prototype = new Super(); Cat.prototype.features = []; })(); var aHua = new Cat(); var aHei = new Cat(); aHua.features.push('eat'); console.log(aHua.sleep()); //Bruce.Yin正在睡觉! console.log(aHei.features); //[]
@幻天芒: 解决了。
//实例引用属性 //this.features = [];
这行代码最好不注释掉,实现上面问题...
比如再有个Bird();子类实例,又要写一遍Bird.prototype.features = [];
...
@Coca-code: 要共享的话,就是构建原型属性。
@幻天芒: http://q.cnblogs.com/q/76990/
这个换行怎么写?