问答详情
源自:1-3 javascript原型基础知识

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

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

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

提问者:seradle 2018-05-25 15:23

个回答

  • 依韵_宵音
    2018-06-02 22:32:29

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

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

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


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