继承

2018-01-15  本文已影响0人  goodluckall

function Person(name,age){

this.name=name;

this.age=age

}

Person.prototype.say=function(){

console.log('我叫'+this.name)

}

var p1=new Person('lisa',18);

p1.say();

function Coder(name,age,job){

// this.name=name;

// this.age=age;

// Person(name,age); //这样this->window

Person.call(this,name,age)

this.job=job;

}

// Coder.prototype.say=function(){

// console.log('我叫'+this.name)

// }

// Coder.prototype=Person.prototype;//不行,因为它是一个对象,我们改了一个的值另一个也会改掉

//Coder.prototype.say=Person.prototype.say;

// Coder.prototype.say=function(){

// console.log(1);

// }

//这种继承方法可以用,但是如果要继承的属性多时非常麻烦

for(var attr in Person.prototype){

// Person.prototype.hasOwnProperty(attr)如果只继承Person原型上的属性或方法就判断它

Coder.prototype[attr]=Person.prototype[attr];

}

Coder.prototype.coding=function(){

console.log('我的工作是'+this.job+',我在干活')

}

var p2=new Coder('liu',18,'前端');

p2.say();

p2.coding();

p1.say();

// 继承:让一个对象身上的属性拥有另一个对象身上的属性或者

//方法.

//          如果是属性继承: 我们通过call方法调用我们要继承的构造函数身上的属性.

//          如果是方法继承:通过forin方法继承原型上的方法

//

// 注意:继承属性时,this要用call修正一下

// 继承其它对象方法时不能直接复制

上一篇下一篇

猜你喜欢

热点阅读