js可否自訂類

來源:互聯網
上載者:User
js中沒有類的說法,但可以使用函數來類比類。一個函數就可以是一個類:function Person(){}存在以上函數後,你就可以使用var p = new Person();來構造一個Person的執行個體。而類是有屬性和方法的,js則通過this來實現了屬性和方法的添加。function Person(){        this.name = "myName";        this.age = 20;        this.eat = function(food){                alert("eat:"+food);        }}這樣的定義使Person構造出來的對象都具有一些屬性和方法了。例如之前聲明的p,此時就有p.name = "myName"和p.age = 20,同時,p.eat("egg")則會彈出對話方塊“eat:egg”。這不就是一個類的實現嗎?所有的類都是繼承自Object的,但var a = new Object(),a則是Object的一個執行個體,而不是一個新的類。就像前面的p一樣,難道你還可以使用var b = new p()?顯然是不行的。那麼js是怎麼實現繼承的呢?說起來js中類的實現和繼承都有很多種方法,一時我也想不出。就舉一個最簡單的吧。假設前面定義了那個Person類,現在要讓一個Student類繼承它,怎麼做?function Student(){}Student.prototype = new Person();如上代碼就實現了js中的繼承關係,假如此時聲明一個Student的對象:var s = new Student();alert(s.name);//彈出“myName”s.eat("egg");//彈出“eat:egg”在新定義的類中,你可以重寫所有的屬性和方法,比如function Student(){        this.eat = function(food){                alert("learn first!");        }}之前的eat調用會彈出eat:food,此時再次調用eat,則會報出learn first!,說明方法已經被重寫了。在Student中,你還可以定義新的方法,新定義的方法,Person的對象都不具有。給你推薦一個本書《javascript進階程式設計》,李松峰和曹力翻譯的,挺好的,也挺入門的。才50多塊錢,想想50多塊錢就能掌握一門技術,值得!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.