为了账号安全,请及时绑定邮箱和手机立即绑定

prototype 是什么东西,原型链的理解,什么时候用 prototype

标签:
JavaScript

prototype

prototype是函数对象上面预设的对象属性

1.JS中所有的东西都是对象,每个对象都有prototype这个属性,这个属性是一个对象(object)

2.JS中所有的东西都由Object衍生而来, 即所有东西原型链的终点指向Object.prototype。如果还是再找不到,就返回null(Object.prototype.proto===null)

3.JS中构造函数和实例(对象)之间有微妙的关系,构造函数通过定义prototype来约定其实例的规格, 再通过 new 来构造出实例, 他们的作用就是生产对象。而构造函数(方法)本身又是方法(Function)的实例, 因此也可以查到它的__proto__(原型链)

Object / function F(){} 这样子的就是构造函数,一个是JS原生API提供的,一个是自定义的

new Object() / new F() 这样子的就是实例

实例就"只能"查看__proto__来得知自己是基于什么pro

totype被制造出来的,而"不能"再重新定义实例的prototype妄想创造出实例的实例了。

原型

是一个对象上面的原型,这个原型通常是它的构造器的prototype属性

原型链

function foo(){};
foo.prototype.z = 3;
var obj = new foo();

通过new构造对象(实例)的特点是,obj的原型(prototype)指向了构造器的prototype属性,也就是foo.prototype,而foo.prototype则指向了原始的Object.prototype,Object.prototype也有原型,为null。这就是一整个原型链。

什么时候用 prototype

使用 prototype的好处是不会额外产生内存,所有实例化后的对象都会从原型上继承这个方法。也就是需要一个子类拥有父类的某些特性(同种特性可以覆盖),又可以添加自己的特性,而不会影响父类时候使用prototype。

Prototype通常用来解决一个问题:对象的创建比较耗费资源。比如,对象创建的时候需要访问数据库、需要读取外部文件、需要使用网络,这些都是比较耗费时间和内存的。如果可以用clone来解决,就方便多了。当需要创建很多 拥有相同属性的对象时候需要clone。

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
20
获赞与收藏
150

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消