JavaScript之原型和原型链

📒 博客首页:✎﹏ℳ๓敬坤的博客 🎈
😊 我只是一个代码的搬运工 🎃
🎉 欢迎来访的读者关注、点赞和收藏 🤞
😉有问题可以私信交流 😆
📃 文章标题:【JavaScript之原型和原型链】 🖍

原型对象和原型链

原型对象

JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象

如何使用原型

在javascript中,函数可以有属性。每个函数都有一个特殊的属性叫作原型(prototype),正如下面所展示的。

function fu(){}
console.log(fu.prototype)
函数原型

原型对象都有默认的属性,它在控制台上面呈现了出来. 运行这段代码之后,控制台上面应该出现了像这样的一个对象.
在这里插入图片描述
除了默认属性,我们也可以自己给这个原型对象添加属性,如下:

fn.prototype.num=123

这样我们fn对象就会添加到一个num的属性,控制台效果如下:
在这里插入图片描述

实例对象原型

通过new创建一个实例对象,在给我们的实例对象添加属性

function fn(){}
fn.prototype.num=123
var newFn = new fn()
console.log(newFn)

可以发现我们实例对象下有一个[[Prototype]]属性,打开我们[[Prototype]]属性也可以找到函数原型的属性
在这里插入图片描述

原型链

原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain)

原型链之间的关系

通过实例三种类型的实例对象来表达之前的关系

var num = new Number(123)
var str = new String('123')
var obj = new Object({a:123})
console.log(num)
console.log(str)
console.log(obj)

这三个类型的实例对象关系如下:
请添加图片描述

Object类型的实例对象的[[Prototype]]属性类型是Object
Number和String的第一个[[Prototype]]属性类型是对应的数据类型,但是在[[Prototype]]下,还有一个[[Prototype]]属性,但这个[[Prototype]]属性类型是Object。
这样我们就可以发现,不管什么类型的对象,最终的[[Prototype]]属性类型都是Object类型

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

✎﹏ℳ๓敬坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值