Javascript修改對象方法

來源:互聯網
上載者:User

一、建立新的方法

利用Prototype屬性為任何已有的類定義新方法,就像處理自己的類一樣。例如,還記得Number類的tostring()方法嗎,如果傳遞16,它將輸出十六進位的字串。難道用toHexstring()方法處理這個操作不是更好嗎?建立它很簡單:

Number.prototype.toHexstring = function(){   return this.toString(16);}    

在此環境中,關鍵字this指向Number的執行個體,因此可完全訪問Number的所有方法。有了這段代碼,可實現下面操作:

var iNum = 15;alert(iNum.toHexstring());  //outputs "F" 

 

二、重定義已有的方法

就像能給已有的類定義新方法一樣,也可重定義已有的方法。函數名只是指向函數的指標,因為可以輕易地指向其他函數。如果修改了本地方法,如toString(),會出現什麼情況?

 

Function.prototype.toString = function () {  return "Function code hidden";} 

前面的代碼完全合法,運行結果完全符合預期:

 

function sayHi(){  alert("hi");} alert(sayHi.tostring());  //outputs "Function code hidden" 

有時你甚至可能在新方法中調用原始方法:

 

Function.prototype.originalToString = Function.prototype.toString; Function.prototype.toString = Function(){  if(this.originalToString().length>100){     return "Function too long to display." }else{     return this.originalToString();  }};

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.