直接定义和在_proto_中定义的区别
我想问下,就是这个函数直接定义和在原型中定义在实际开发中有什么区别
我想问下,就是这个函数直接定义和在原型中定义在实际开发中有什么区别
2018-05-25
直接 `arr.test` 是给arr这个数组(本质还是对象)新增了一个新属性,值为一个函数。
而 `arr.__proto__.test` 则是加在arr的原型上的。
类比面向对象的变成思想。假设一直狗会叫,那么这个方法是针对每一只具体的狗逐个去赋予它这个方法呢?还是直接在狗的这个抽象类对象上?
不过在实例代码中用prototype的更多一些吧,不过和 `__proto__` 也是有区别的,简单可以说prototype是从Array上访问,而在具体以的某个 `[]` 上是不行。不过 `Array.prototype === [].__proto__` ,因此可通过[].__proto__访问修改Array.prototype。 具体区别需要深入JavaScript的原型链机制了。
举报