1
嗯,我覺得這很有趣,當然,如果我想深入瞭解這些代碼,我肯定會知道他們是如何做到的。我在說的是JQuery庫。看看下面的代碼 -智能javascript jquery對象
$.prototype.mymethod=function(str){
alert(str);
}
//now call the added method
$(document).mymethod('hello') //alert out hello
如果$
是一個純正常的JavaScript函數 (不使用jQuery庫),增加的方法不會如預期,除非new
關鍵字$
new $(document).mymethod('hello')
之前前置工作
但是用jQuery,new
關鍵字非常可選!
有人可以給我們更多的見解,他們如何做到這一點,而無需我通過他們的圖書館?
編輯: 一個艱苦的奮鬥之後,終於讓我挖出來的上述工作原理(構造 JavaScript對象 不使用new
關鍵字)的實際根源的機制!我相信這將成爲任何渴望學習advanved javascript的人的好參考!
function a(){
return a.prototype;
}
a.prototype.fn=function(){
alert('hello')
}
a.prototype.test=123;
console.log(a().test)//123
a().fn()//alerts out hello
@ spaceman12:沒有什麼特別的地方。只需創建一個函數,該函數在被調用時創建一個新對象並將其返回。例如:'function A(){return new B(); }'。 – 2013-03-15 18:38:35
但是,如果我想將方法添加到'A'而不是B,並將其稱爲A()。mymethod(),那麼您將如何返回新創建的A對象? – spaceman12 2013-03-15 18:47:02
對於A而不是A返回的內容,'A()。mymethod()'不會調用'mymethod'嗎?我想你想爲A返回一個新的對象,你需要'A.mymethod()',如果'mymethod'創建一個,它將返回一個新創建的對象... – ckersch 2013-03-15 18:56:31