1
m939594960 Nov 27, 2016
|
2
ashong Nov 27, 2016 via iPhone
prototype
Array.prototype.get = function(idx){ } |
3
feehey Nov 27, 2016
|
4
longear Nov 27, 2016
因为 js 是基于原型链的, 在对象的 prototype 属性上附加声明即可。
Array.prototype.get= function(val){ // this[??] = val; // ... // var json = eval(this); // return json; } |
5
haozhang Nov 27, 2016 via iPhone
你可以包装一个类,内部一个 private 的数组容器,提供各种方法
|
6
hronro Nov 27, 2016
修改原生对象的这种做法,一般不推荐
|
7
chemzqm Nov 27, 2016
修改原生对象太容易出问题,自己写个封装类吧
class MyArray { constructor(arr) { this.arr = arr } } |
8
Phariel Nov 27, 2016 via Android
这种 polyfill 的形式非常非常不推荐
|
9
butterandfly Nov 27, 2016
- 同楼上,不赞成这种 polyfill 的形式
- 如果只是封装了两行逻辑的话,你要考虑到时候是写两行方便点还是导入包来解决方便点 - 先考虑原生是否已经提供方便的方法,或者能否使用如 lodash 之类的库 |
10
billlee Nov 27, 2016
这种需求不是应该用继承吗?
|
11
php71 Nov 27, 2016
es6 用 class MyArray extends Array {}
es5 用 Array.prototype.myMethod = function() {} |
12
Lonely Nov 27, 2016 via iPhone
搞 js 的不知道原型?
|
13
techmoe Nov 27, 2016 via Android
*不推荐修改原生对象的 prototype ,这不仅可能会造成后期匪夷所思的问题,还会对维护增加负担*
|
14
palmers Nov 28, 2016
#2 是对的, 内部实现自定义就可以了, 只要是 Array 实例都可以调用, 然后首行增加实例类型判断就基本没什么问题了
|
15
dilidili Nov 28, 2016
建议你看看 JS 中的原型( prototype )和原型链(__proto__),但是修改原生的方法有的时候会出现问题,建议加一个自定义的,不和原生方法重复的名字。
|