继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

lxcan
关注TA
已关注
手记 8
粉丝 20
获赞 150

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。

打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

原型链最终都应指向null

查看全部评论