如何编写类似于jquery的自己的函数? 例如:
$('parameter1').doSomething('parameter2);
function $(p1){
var doSomething=function(p2){}; // this does not work to call....
}
答案 0 :(得分:1)
尝试将$
定义为全局window
对象的属性;在obj
函数中创建具有属性$()
的对象doSomething
,将window.$
设置为对象obj
;使用命名空间为window.$
创建别名;从调用window.$
.doSomething
具有属性$()
的对象
window.$ = function $(args) {
var obj = {
doSomething: function doSomething(args) {
// do stuff
document.write(args + "\n");
console.log(this);
// return `window.$`
return window.$
}
};
// create alias for `window.$`
var namespace = "abc";
// set `window.$` to `obj`
window.$ = window[namespace] = obj;
if (args && window.$) {
window.$.doSomething.call(window.$, args)
};
// return `window.$`
return window.$
};
$("abc").doSomething("def");

答案 1 :(得分:0)
首先,您需要了解JavaScript中method chaining的概念。
上例中的$()
方法不会返回任何内容。
即使这样做,从$()
方法返回的对象也需要doSomething()
方法。
例如:
$ = function(id) {
return document.getElementById(id);
}
$('foobar').doSomething(); //assumes doSomething() exists on the returned object.