javascript類繼承的一些實驗

來源:互聯網
上載者:User

其實一開始編js沒怎麼用過對象,一般都用func,func,func···但是用多了,感覺代碼一點都不美觀,還要這裡包一個函數,那裡包一個 函數,或者一直都是函數調用,不好看,而且一些重用的都要重寫的話就很麻煩(不好意思,對於我這種新手,開始還是一般用func比較高效率···)。所以 就決定開始要用object來編程才能更省事,下面就是我看了一些部落格文章關於類的見解,有什麼不對的希望各位可以多多給些指點:

對於類的編程,聲明的方法有如下幾種:1、var test = function(){};2、function test(){};3、var test = new Object();4、var test = {};···我現在能想到的就只有這四種,麻煩各位大神還有什麼可以聲明對象的繼續補充,小弟在此謝過!

此時要分開方法來說:

    對於1、2方法,應該是有一些已有屬性的,就好像你給test.name加個值,但是你發現輸出test.name的時候是輸出  func  的名字,不過test可以加其他靜態屬性,但是還有沒有其他保留字,暫時我還沒繼續去找;

    而對於3、4方法,是可以向test.name賦值的,也會正確輸出該值。

    所以,對於func固有的屬性,若用func方法來聲明對象就可能有些值是不允許賦的,因此,個人更建議對象聲明時用的是3、4方法。但是,其實用func來聲明類的好處就是可以更直觀地初始化一些基本的值

    

   接著就是類的繼承,下面舉個例子

var parent = function(name,age){  this.name = name;  this.age = age;  this.method = function(){    alert("This is my method!");  }}//類繼承var child = function(name,age){  parent.apply(this,arguments); //OR  test.call(this,name);this.age = age;  //Other method or variables}//這種繼承其實有一個好處就是可以直接在子類裡面執行個體化父類,父類的變數只要在func本體內就可以直接在子類中用了。但是,子類內執行個體化並不是萬全之策,下面再看看/*---------------------------------------------------------------------------*/var parent = function(name,age){  this.name = name;  this.age = age;}parent.prototype = {  run: function(){    alert(this.name + " is running!");  },  work: function(){    alert(this.name + " is working!");  },}var child = function(name,age){  this.name = name;  this.age = age;}//類繼承child.prototype = new parent();var c = new child("li",20);c.run();//有alert,如果像之前在子類內用parent.apply方法,那麼parent.prototype的內容對於child是沒作用的,所以我就覺得這個就是子類內定義父類(parent.apply)和外面子類prototype(child.prototype = new parent())的區別


聯繫我們

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