1.for in
2.原型继承3种方式:
1. function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function () {
console.log("哈哈哈");
}
var p = new Person("哈哈",50);
p.sayHello();
2. function Person(name, age){(使用替换原型的方式实现继承的时候,原有原型中的成员就会丢失)
this.name = name;
this.age = age;
}
var parent = {
sayHello : function () {
console.log("哈哈哈");
}
}
Person.prototype = parent;
var p = new Person("哈哈",50);
p.sayHello();
3. 利用混入的方式给原型对象添加成员
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.sayHi = function () {
console.log("Hey man");
}
var parent = {
sayHello : function () {
console.log("哈哈哈哈");
}
}
for(var k in parent){
Person.prototype[k] = parent[k];
}
var p = new Person("哈哈",50);
p.sayHello();
应用:如何安全的扩展一个内置对象:
function MyArray() {
}
var arr = new Array();
MyArray.prototype = arr;
var myArr = new MyArray();
myArr.push(100);
myArr.push(2,3,4,5)
console.log(myArr);
3.经典继承:
function create(obj){
if(Object.create){
return Object.create(obj);
}else{
function F() {
}
F.prototype = obj;
return new F();
}
}