2012-07-11 108 views
3

JavaScript表單對象是否有機會使用原型Form對象上,這是行不通的:擴展與原型

Form.prototype.myFunc=function() 
{ 
    alert('OK!'); 
} 

在另一方面,String對象是可擴展的,例如:

String.prototype.trim = function() { 
    return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
} 
+0

什麼是Form? – xdazz 2012-07-11 08:17:29

+0

因爲沒有'Form'對象 - 不,它不起作用。 – 2012-07-11 08:19:03

回答

7

如果你指HTMLFormElement,那麼它應該是

HTMLFormElement.prototype.myFunc=function() { 
    alert('OK!'); 
}; 
+0

是的,我的意思是HTMLFormElement。它現在有用,謝謝! – user1517081 2012-07-11 08:45:01

1

沒有規範,要求d OM對象來實現任何類型的繼承,更不用說原型繼承。儘管如此,許多瀏覽器都這麼做,但它並沒有標準化或普遍實施。

您可能想閱讀What’s wrong with extending the DOM

在這兩個國家執行的DOM元素的原型繼承方案瀏覽器,你可以嘗試使用類似延伸HTMLFormElement.prototype:但是

if (typeof HTMLFormElement == 'object' && 
    typeof HTMLFormElement.prototype == 'object') { 

    // extend HTMLFormElement.prototype 

} 

注意主機對象的行爲完全依賴於實現的。以上可能會做任何事情,包括拋出錯誤。