js继承实例

 

<script>

function Person(name){

    this.name=name;

}

Person.prototype.getName=function(){

return this.name;

}

//var person = new Person("代绍帅");

//alert(person.getName());

/**************Author继承Person类***************/

/****创建构造函数 ****/

function Author(names,books){

    /****调用超类的构造函数***/

Person.call(this, names);

this.books = books;

}

/******将子类指向超类的一个实例*/

Author.prototype = new Person();

/*****prototype设置为Person的实例时,其Constructor属性会被抹掉*/

Author.prototype.constructor = Author;

Author.prototype.getBooks = function(){

return this.books;

var author = new Author("代绍帅", "Cbooks");

alert(author.getName());

alert(author.getBooks());

</script>

 

 

 

 

 

Extend Demo:

 

 

<script>

var Person = {

name:'default Name',

getName:function(){

return this.name;

}

};

function clone(object){

function F(){}

F.prototype = object;

return new F;

}

var reader = clone(Person);

var readerwang = clone(Person);

reader.name='aa';

alert(reader.getName());

alert(readerwang.getName());

 

</script>

 

 

个人见解:

  个人感觉每一次所谓的继承,重载基本都是通过三个步骤:

  1.模拟javascript new 新建对象时,建立空对象。

  2.将空对象的prototype只想superclass。

  3.重新将subclass的constructor指向subclass。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值