如何使用javascript正确返回对象而不是函数?
我正在为自己制作一个助手库。首先,我是这样包装的:如何使用javascript正确返回对象而不是函数?,javascript,Javascript,我正在为自己制作一个助手库。首先,我是这样包装的: (function (Helper, window, document) { var Helper = Helper || {}; var type = function () { return { isObject: function (value) { return value !== null && Object.prototype.t
(function (Helper, window, document) {
var Helper = Helper || {};
var type = function () {
return {
isObject: function (value) {
return value !== null && Object.prototype.toString.call(value) === "[object Object]";
},
isNumber: function (value) {
return value !== null && Object.prototype.toString.call(value) === "[object Number]" && !isNaN(value);
},
isString: function (value) {
return value !== null && Object.prototype.toString.call(value) === "[object String]";
},
isArray: function (value) {
return value instanceof Array;
},
isFunction: function (value) {
return typeof value === "function";
},
isDate: function (value) {
return value instanceof(Date);
},
isRegExp: function (value) {
return value instanceof RegExp;
},
isBoolean: function (value) {
return value !== null && Object.prototype.toString.call(value) === "[object Boolean]";
},
isError: function (value) {
return value instanceof Error;
},
isNull: function (value) {
return value === null;
},
isUndefined: function (value) {
return typeof value === "undefined";
}
};
};
Helper.type = type;
})(Helper = window.helper || {}, window, document);
现在这很好,但是为了访问函数,我需要调用一个类似Helper.type().isNumber(5)的函数。这应该是什么样子的,以便它可以作为对象值返回,比如这个Helper.type.isNumber(5)?只需从
类型中删除函数()
包装:
(function (Helper, window, document) {
var Helper = Helper || {};
var type = {
isObject: function (value) {
return value !== null && Object.prototype.toString.call(value) === "[object Object]";
},
...
isUndefined: function (value) {
return typeof value === "undefined";
}
};
Helper.type = type;
})(Helper = window.helper || {}, window, document);
只需删除函数类型(){
和};Helper.type=type
并将return
替换为Helper.type=
(function(Helper, window, document) {
Helper.type = {
isNumber: function () {...}
};
})(Helper = window.helper || {}, window, document);
而不是分配函数引用:
Helper.type = type;
改为指定函数返回值:
Helper.type = type();
可以删除var-type=function(){…}
上的函数wrapfunction(){…
然后var-type={isObject:…
或只执行函数instant,如var-type=function(){…}()
或Helper.type=type()
请注意,如果窗口.Helper
未定义,您不是在向助手添加函数,而是在替换。您可以使用一种简单得多的模式:如果窗口.Helper
未定义,您无处可以分配它。是的,您可以将其分配给窗口.Helper
(隐式全局绑定)或者var Helper
,如果它在那里。但是OP正在用Helper
或{}
覆盖Helper
,我猜这不一定是他想要做的。在OP中同样的错误:-)无论如何window.Helper
总是未定义的,因为