微笑面对通过本文主要向大家介绍了javascript,继承等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
function MyArray() {
}
MyArray.prototype = new Array();//替换原型对象,使得MyArray继承了Array
var arr = new MyArray();
arr.push(1, 2, 3);//原型的push方法
console.log(arr);
console.log(arr.__proto__);
var arr1 = new MyArray();
console.log(arr1.__proto__);
2.《JavaScript语言精粹》作者提出了一个方式来实现继承, 经典继承方式
function jicheng(obj) {
var o = {};
o.__proto__ = obj;//替换原型
return o;
}
var o = jicheng({name: "张三"});
console.log(o);
3.Object.create()方法实现继承,并解决它的兼容问题
//自定义一个函数解决Object.create()方法
function create(obj) {
if (Object.create) {
return Object.create();
} else {
function F() {
}
F.prototype = obj;
return new F();
}
}
4.比较low的继承方式,滚入式继承
var person = {
name:"关羽",
age:21,
func:function () {
console.log("耍大刀");
}
};
var man = {
name:"赵子龙",
age:20,
death:75,
func:function () {
console.log("耍龙胆枪");
}
};
//滚入式继承(mix in)
for(k in man){
person[k] = man[k];
}
person.death = 55;
console.log(person.death);
console.log(person.name);//赵子龙
5.call、apply方法实现继承
function Animal() {
this.gender = "male";
}
function Tiger() {
Animal.call(this);//tiger的this引用指向了Animal,但它仍然是Tiger的一个对象
this.name = "老虎";
}
var tiger = new Tiger();
console.log(tiger.gender);//male
console.log(tiger.name);//老虎
6.寄生继承
function BigAnimal(child) {
var clone = Object(child);
clone.play = function () {
alert("BigAnimal真会玩");
};
return clone;
}
var Tiger = {
name : "老虎"
};
var animal = BigAnimal(Tiger);
console.log(animal.name);
animal.play();