我尝试实现一个功能,例如MyFn()
具有以下一些功能:
1. MyFn('Id')>它必须是document.getElementById('Id')的值的结果。
2. MyFn('Id')。MyMethode();>它必须是一个函数的执行结果。
下面这个由“Object.prototype中”来实现如下:
如何在JavaScript中使用扩展功能编写函数?
Object.prototype.MyFn =function(param1){ return document.getElementById(param1); };
alert(MyFn('mydiv1'));
MyFn('mydiv1').posi = function() { alert("Hello, I'm the function posi!"); };
MyFn('mydiv1').posi();
alert(MyFn('mydiv1'));
就在上面的例子就是我想实现。但我不想使用Object.prototype或jQuery。
下面是我的错方法(这也许是有益正是我想说的还是做):
var MyObj = {
method: function(args, callback) {
if(typeof callback == "function") {
callback();
}
return 123;
}
}
MyFn = function(sId) {
return MyObj;
};
alert(MyFn("mydiv1").method()); // This is ok, because it calls the method: MyObj.method() as it was expected.
alert(MyFn("mydiv1")); // <-- But here I like to get document.getElementById("mydiv1").
注:的语法的代码(功能如何调用)很重要!该功能是拨打如下:MyFn(“元素ID”)或MyFn(“元素ID”)POSI(),而不是如下:MyObj.MyMethode()
你有任何想法如何能我意识到了吗?提前致谢。
您不能从具有相同输入的单个函数返回2个不同的结果。您要么返回HTMLElement对象,要么返回自己的对象。 'MyFn(id)'将总是返回**相同的结果** - 不管你以后想怎么做(例如'.method()') – Amit
没错!但是我想以某种方式实现某些东西,正如我上面所解释的。例如jQuery做类似的事情。例如。 $('#Id')和$('#Id')。position()。left。 – user3815508
jQuery不返回HTMLElement。它返回一个包含很多功能的jQuery包装器对象(比如'position()')。当你想要执行元素时,你可以调用'.get()'。 – Amit