我有一个数组,它有一个名为 add
的方法,我将其用作 push
的包装器。我发现自己在应该使用 add
的时候使用了 push
几次,现在我想为我的 分配一个引用会很好将
方法添加到数组的 native push
中。因此,在数组上调用 push
将调用 add
。
内部是否依赖于外部可用的 native 方法,例如 push
?这会如何影响兼容性?这是一个坏主意吗?如果是这样,为什么?
一些代码:
PR.state = {
views: []
};
_.extend(PR.state.views, {
add: function(view) {
var parent = view.parent;
if ((!this.length && view instanceof PR.Views.App) || (parent && _.contains(this, parent)))
this.push(view);
}
});
// I am thinking:
PR.state.views.push = PR.state.views.add;
最佳答案
我强烈建议不要更改标准数组方法的行为。如果您确实想要一个自定义方法,那么只需创建一个新方法并为其指定唯一的名称并使用它即可。
更改现有方法的行为可能会产生各种不良后果:
- 与从任何其他来源检索到的代码不兼容。
- 如果其他人曾参与此项目,则会创建非标准且意外的实现。这就像添加一个定时炸弹来绊倒一些 future 的开发人员。
- 训练自己使用自己的自定义方法而不是
.push()
是一个体面的开发人员会做的事情。就去做吧。 - 使用适当的描述性名称创建新命名的方法可以提高代码的可读性、可理解性和可维护性。用工作方式不同的方法替换现有方法会产生相反的效果。
如果您只替换数组的一个实例上的方法,而不是整个数组原型(prototype),这也不算太糟糕,但这仍然不是一个好主意。
关于javascript - 使用自定义方法替换 native 对象(数组)方法 : Is it safe? 兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15400785/