分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

继承 (js原型链)

发布时间:2023-09-06 02:11责任编辑:傅花花关键词:js

原型链是实现继承的主要方法。基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法。

1.构造函数、原型、实例的关系:

每个构造函数都有原型属性(Prototype),指向一个原型对象(函数创建相应产生原型对象),每个原型对象包含一个属性(constructor),指向构造函数。每个实例都包含指向原型对象的内部指针(_proto_)。

如果令实例A的原型对象等于另一个构造函数的实例B,那么A的原型对象将包含指向B的原型对象的内部指针(_proto_),所以A可以继承来自B的原型对象中的属性和方法。相应的,B的原型对象也可以引用其他实例的原型对象(通过实例的赋值方法)。按照这种方法,一层层递进,可以构成实例和原型的链条(即原型链)。

注意一点:实例B的原型对象的构造器(constructor)属性是指向B的构造函数,而A的原型对象相当于引用B的原型对象,A的原型对象被重写!A的构造器属性指向B的构造函数。

最后,原型链的末端为Object的原型对象。因为一切都是对象,所有的函数都是Object的实例。

2.实现原型链的基本模型:

function Supertype(){

    this.property=true;

}
Supertype.prototype.getSuperValue=function(){
???return this.property;
};
function SubType(){
???this.subproperty=false;
}
SubType.prototype=new Supertype();
SubType.prototype.getSubValue=function(){
???return this.subproperty;
};
var instance=new SubType();
console.log(instance.getSuperValue()); //true
console.log(instance.constructor);
//f Supertypr(){
this.property=true;
}
其中构造函数中的属性仅包含在实例对象中,不包含在它的原型对象中,原型对象中的属性和方法需要通过.prototype.name=value来进行添加。故,property位于Subtype.prototype中(将实例
后的对象赋给Subtype.prototype),而不在SuperType.prototype
 

继承 (js原型链)

原文地址:https://www.cnblogs.com/alaner/p/9510774.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved