原型和继承

原型是什么

简而言之 原型是函数的一个对象属性 创建一个函数的时候 会默认添加一个Prototype属性

我们接下来简单的实现一下

function test(name) {

this.name = name

}

console.dir(test);

console.log(test.prototype);

上述代码已经得到证实了

// prototype (原型 原型对象)

// 1 是函数的一个属性

// 2 是个对象

// 3 创建函数的时候会默认添加Prototype属性

__proto__又是什么呢

// proto 隐式原型

// 对象的属性

// 1 对象的一个属性

// 2 指向构造函数的prototype

接下来我们来证实一下这几句话

var obj = new test('小明')

console.log(obj.proto);

console.log(obj.proto === test.prototype);

证明完成

test.prototype也是一个对象 他也应该有__proto__ ,他指向的Object.prototype

也就是

console.log(test.prototype.proto === Object.prototype); //true

那么原型链是什么 ?

// 所谓的原型链就是

// obj {

// proto:test.prototype={

// proto:Object.prototype={

// proto:null

// }

// }

// }

并且给test.prototype中一个属性c 可以在obj中访问到 给Object.prototype一个属性 也可以在obj中访问到

继承是什么

// 继承方法

const parent = {

value: 2,

method() {

console.log(this);

return this.value + 1

}

}

console.log(parent.method());//3 不难理解

const child = {

proto: parent,

}

console.log(child.method());//3 this 指向child 但是属性中没有value 在原型链上查找 最后找到原型的value

child.value = 4

console.log(child.method());//child有value属性了 发生属性遮蔽

相关推荐
CodeCraft Studio13 分钟前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一14 分钟前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
2501_915918411 小时前
Web 前端可视化开发工具对比 低代码平台、可视化搭建工具、前端可视化编辑器与在线可视化开发环境的实战分析
前端·低代码·ios·小程序·uni-app·编辑器·iphone
程序员的世界你不懂2 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
索迪迈科技2 小时前
网络请求库——Axios库深度解析
前端·网络·vue.js·北京百思可瑞教育·百思可瑞教育
gnip2 小时前
JavaScript二叉树相关概念
前端
lingchen19062 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
gb42152873 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
一朵梨花压海棠go3 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript
蒋星熠3 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程