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

直接定义和在_proto_中定义的区别

https://img3.mukewang.com/5b07b97a0001a2df19731080.jpg

我想问下,就是这个函数直接定义和在原型中定义在实际开发中有什么区别

2018-05-25 源自:zepto设计和源码分析 1-3 481 浏览 1 回答

直接 `arr.test` 是给arr这个数组(本质还是对象)新增了一个新属性,值为一个函数。

而 `arr.__proto__.test` 则是加在arr的原型上的。

类比面向对象的变成思想。假设一直狗会叫,那么这个方法是针对每一只具体的狗逐个去赋予它这个方法呢?还是直接在狗的这个抽象类对象上?


不过在实例代码中用prototype的更多一些吧,不过和 `__proto__` 也是有区别的,简单可以说prototype是从Array上访问,而在具体以的某个  `[]` 上是不行。不过 `Array.prototype === [].__proto__`  ,因此可通过[].__proto__访问修改Array.prototype。 具体区别需要深入JavaScript的原型链机制了。


2018-06-02
回复 0

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信