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

被折叠的 条评论
为什么被折叠?



