Javascript 在JS中创建这样的对象的最佳实践是什么:T(';isArray';)([])==T.run(';isArray';)([])==T().run(';isArray';)?
知道Javascript 在JS中创建这样的对象的最佳实践是什么:T(';isArray';)([])==T.run(';isArray';)([])==T().run(';isArray';)?,javascript,Javascript,知道T是主要对象,在JavaScript中创建这样的对象的最佳实践是什么: T('isArray')([]) T.run('isArray')([]) T().run('isArray')([]) T('isArray', []) T.run('isArray', []) T().run('isArray', []) 它们都必须使用相同的函数。因为可以调用主对象,所以它必须是一个函数。函数应根据参数决定返回什么: var T = (function() {
T
是主要对象,在JavaScript中创建这样的对象的最佳实践是什么:
T('isArray')([])
T.run('isArray')([])
T().run('isArray')([])
T('isArray', [])
T.run('isArray', [])
T().run('isArray', [])
它们都必须使用相同的函数。因为可以调用主对象,所以它必须是一个函数。函数应根据参数决定返回什么:
var T = (function() {
var functions = { // define functions that can be run like isArray
isArray: function(a) {
return Array.isArray(a);
},
log: function(a, b) {
console.log(a + b);
}
};
var noop = function() {}; // function doing nothing (no operation)
var T = function(f) {
if(arguments.length >= 2) { // function + args provided
return (functions[f] || noop) // call it
.apply(this, [].slice.call(arguments, 1));
} else if(arguments.length === 1) { // only function provided
return function() { // return function that can be called with args
return (functions[f] || noop)
.apply(this, arguments);
}
} else { // nothing provided, return T itself (so that e.g. T.run === T().run)
return T;
}
}
T.run = function() { // run function
return T.apply(this, arguments);
};
T.getState = function() { // another function
console.log("Not implemented");
};
return T; // actually return T so that it gets stored in 'var T'
})();
// tests
console.log(
T('isArray')([]),
T.run('isArray')([]),
T().run('isArray')([]),
T('isArray', []),
T.run('isArray', []),
T().run('isArray', [])
);
T('log')(1, 2);
T.getState();
我认为你需要一个解释来解释这一点是有用的。类似于jquery/yui3的东西完全没有解释任何东西。你想做什么,为什么?呃。请像这样做:
T([]).isArray()
这太好了,因为T本身会有一些方法,而数组是主包中的一个函数。可能有“array.isArray”。当我在T上使用“isArray”方法时,主要问题出现了。我没有指定,但T对象可能有其他方法,如:load、instance、getState。但是主方法应该始终是“run”方法,“a”将被用作参数,因为不仅会有“isArray”方法,而且会有不同的参数number@Totty:我不确定,但即使像jQuery这样的复杂库也没有那么差的性能,所以我不必担心。还有一个问题:我需要它来处理多个实例,但我如何使用相同的“原型”?@Totty:我不完全清楚你的意思。您能提供一个您想要使用的代码示例吗?