我嘗試實現一個功能,例如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