其他oop语言Java,C#,C++,PHP中的继承
例如在PHP中的继承:
<1> 对象的组成: 属性、方法
<2> 继承对象的属性、方法
<3> 继承步骤:先执行父级的构造函数;再添加自身的属性和方法JavaScript中的继承(只谈组合继承)
①属性的继承: 构造函数的伪装 :.call() || .apply()②方法的继承: 通过原型链
(父类实例化对象赋给子类原型对象 或 for-in循环 子类.prototype[i] = 父类.prototype[i])③ 注意:在子类继承中,要先继承父类,然后再用原型方法写自己独有的方法,不然后写的话会覆盖掉子类的方法。
//父类Person
function Person(name,sex){
this.name = name;
this.sex = sex;
}
Person.prototype.sayName = function(){
alert("My Name is " + this.name);
}
Person.prototype.saySex = function(){
alert("My Sex is " + this.sex);
}
//Worker子类继承
function Worker(name,sex,job){
//此处用call方法来继承Person类中的属性,说穿了就是继承name和sex
Person.call(this,name,sex);
//学名: 构造函数的伪装!!!
this.job = job;
}
//此处直接通过原型继承父级Person类中方法
//Worker.prototype = Person.prototype; 学名:原型链!注意:其中涉及了对象的引用,有问题
//如果用上述直接引用父类的话 会对父类造成影响,所以为了不影响父类,不能采用上述方法用for-in循环来做
for(var i in Person.prototype){
Worker.prototype[i] = Person.prototype[i];
}
//再添加自身(子类(Worker类))的方法
Worker.prototype.showJob = function(){
alert(this.job);
}