JavaScript中我对原型的理解

ES6前JavaScript无类概念,实现面向对象开发需引用原型概念,原型可共享方法,原型链实现继承。介绍了原型对象和对象原型,以及访问对象成员的查找规则。还给出借用父构造函数继承属性的代码示例,总结了通过原型链和call方法两种继承方式。

在典型的OOP语言中(如Java),但ES6之前JavaScript并没有引入类的概念,所以如果要实现面向对象开发实现共享行为和继承,就需要引用原型的概念,原型的作用就是共享方法,原型链实现继承效果,类型的原型(prototype)叫做“原型对象”,对象的原型(_proto_)叫做”对象原型“,他们指向了同一个对象,当我们不对原型进行赋值时,系统默认会分配一个原型给对象或者函数,这个原型也是一个对象,它的构造方法是它所属的对象或函数的构造方法,我们可以往里面添加方法来进行共享,但是当我嫩直接对原型讲一个新的对象进行赋值时,它的构造函数并不是它所属对象(函数)的构造函数,所以需要手动将对象(函数)的构造函数(constructor)进行赋值。当我们访问一个对象的方法或者成员时会首先在当前对象的对象原型中查找,若没有则会沿着原型链网上查找直到找到为止,若延寻到Object类还没找到时则返回undefined.原型对象函数里面的this指向的是原型所属的对象模型实例或者函数实例。

借用父构造函数继承属性

1、父构造函数

function Father(uname,age){

         //this指向父构造函数的对象实例

          this.uname = uname;

           this.age = age;

}

//2.子构造函数

function Son(uname,age){

         //this指向了子构造函数的实例

          Father.call(this,uname,age);

}

实现了成员的继承效果

function Son(uname,age,score) {

        Father.call(this,uname,age);

        this.score = score;

}

Son.prototype = new Father();

Son.prototype.constructor = Son;

Son.prototype.exam = function(){

console.log('孩子要考试');

}

实现了方法的继承效果

总结继承的俩种方式 1、通过原型链  2、通过call方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值