【发布时间】:2015-09-02 15:00:52
【问题描述】:
我的方法在 Helper 中
var Helper = {
isEmpty: function (obj) {
return !obj || obj === null || obj === undefined || Array.isArray(obj) && obj.length === 0;
},
pushArray: function (arr1, arr2) {
if (arr1 && arr2 && Array.isArray(arr1)) {
arr1.push.apply(arr1, Array.isArray(arr2) ? arr2 : [arr2]);
}
}
}
问题:所以,如果我有两个函数,即isEmpty(它可以检查数组、字符串、对象)和pushArray,我应该使用以下三种方法中的哪一种定义那个函数?而且,这三种方式有什么区别?
有三种方式(也许还有其他方式。):
方式一:Array.prototype.someMethod = function(){ ... }
方式二:var Helper = {someMethod: function(){ ... }}
方式3:window.someMethod = function(){ ... }
个人认为:
- 不推荐使用方式 1。因为,它是 ES(ecmascript) 的对象,而不是我的。也许,你的方法将来会被 ES 添加。
- Way2 是我通常使用的方式。它是全球性的。也取决于你在哪里使用
- Way3 是全局方式。另外,窗口不是我的对象。不推荐
请详细解释。(另外,我没有找到这样的问题)谢谢,提前。
【问题讨论】:
-
使用哪个取决于您的要求以及您将如何使用函数/方法。根据需要,这三个中的每一个都有案例。所以,基本上这个问题没有包含足够的信息来根据某些特定的上下文来回答。
-
这些答案并不能真正回答问题,因为您的一般问题没有答案。这完全取决于情况,您没有描述情况。有时向 Array 原型添加方法是合适的。有时定义一个新的全局函数是合适的。有时将方法放在对象上是合适的。使用哪个取决于具体情况,这个问题过于宽泛,无法要求我们解释所有可能情况下的所有可能答案。
-
您可以改进您的问题并描述特定情况,然后我们可以针对该情况提供非常具体的答案。这是学习如何在 StackOverflow 上提出好的、清晰和具体的问题的一部分。
-
这个问题就像是说我应该开车、步行、骑车还是飞到我的目的地?嗯,答案是这取决于情况的一大堆方面,比如距离有多远,你有多少时间,你是否想锻炼,你能花多少钱,它是哪个社区,你的身体能力等...每个可能的答案在某些情况下都是适当的。
标签: javascript object prototype