我想在Helper对DOM进行赋值,请问如何实现?
var DOM = {};
each(domFactories, function(element) {
DOM[element] = createElement.bind(null, element);
})
const Helper = {
/**
* 判断是不是一个DOM对象
*
* @param {*} obj 要判断的对象
* @return {boolean} 是否是DOM对象
*/
isDom(obj) {
return obj instanceof HTMLElement || obj instanceof Text;
},
/**
* 判断是否是数组
*
* @param {*} obj 要判断的对象
* @return {boolean} 是否是数组
*/
isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
},
/**
* 判断是否是对象
*
* @param {*} obj 要判断的对象
* @return {boolean} 是否是对象
*/
isObject(obj) {
return !(Object.prototype.toString.call(obj) !== '[object Object]' || isDom(obj) || obj instanceof Window);
},
/**
* 判断是否是字符串
*
* @param {*} obj 要判断的对象
* @return {boolean} 是否是字符串
*/
isString(obj) {
return typeof obj === 'string';
},
/**
* 判断是否是函数
*
* @param {*} obj 要判断的对象
* @return {boolean} 是否是函数
*/
isFunction(obj) {
return typeof obj === 'function';
},
/**
* 回调一个函数,最后一个参数为context
*
* @param {Function} callback 回调函数
* @return {*} 返回回调函数返回的结果
*/
caller(callback) {
var args = arguments;
var context = args.length === 1 ? null : args[args.length - 1];
var params = Array.prototype.slice.call(args, 1, args.length);
if (isFunction(callback)) {
return callback.apply(context, params);
}
},
/**
* 遍历一个对象或数组
*
* @param {Array|Object} obj 对象或数组
* @param {Function} fn 回调函数
*/
each(obj, fn) {
if (!(obj && fn)) {
return;
}
// 优先使用forEach,针对数组
if (obj.forEach && isFunction(obj.forEach)) {
obj.forEach(function(item, i) {
caller(fn, item, i, item);
});
}
else if (obj.length === +obj.length) {
for (var i = 0, len = obj.length; i < len; i++) {
var item = obj[i];
caller(fn, item, i, item);
}
}
else
{
// 遍历对象
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
caller(fn, obj[key], key, obj[key]);
}
}
}
},
var domFactories = ['div', 'a', 'span', 'label', 'input', 'select', 'i', 'p', 'ul', 'ol', 'li', 'table', 'thead', 'tbody', 'tr', 'td', 'th', 'hr', 'br'];
var DOM = {};
each(domFactories, function(element) {
DOM[element] = createElement.bind(null, element);
})
}
export default Helper