javascript中建立對象的幾種方式

來源:互聯網
上載者:User

原文地址:http://www.cnblogs.com/dinglang/archive/2012/09/04/2670776.html

 

 

前言:

隨著web 2.0 的興起(最具代表性的是Ajax技術了),javascript不再是程式員眼中的“玩具語言”。 編程在不斷的簡化,可是“使用者體驗、效能、相容性、可擴充......”要求卻在不斷提高,隨之湧現出Prototype、jQuery、ExtJs、Dojo等優秀的架構(類庫),大大簡化了web開發。

越來越多的人開始深入研究和使用javascript,當然,企業對開發人員的要求也越來越高。就拿自己的經曆來講,零幾年的時候,我能拿javascript寫一些頁面UI效果,做網站的表單驗證等操作,當時覺得已經很酷了。但是換到現在,如果連XMLHttpRequest、JSON是什麼都不知道,連javascript中的物件導向/基於對象編程都不瞭解,還敢稱自己是優秀的web程式員嗎?(關注前沿技術的朋友,一定瞭解node.js、MongoDB,這都離不開javascript。)

javascript的靈活性,讓人又愛又恨。典型的入門簡單,精通很難。理解javascript OOP/基於對象的編程,是判斷程式員javascript水平的分水嶺。而javascript 基於對象編程中,最基本的是“建立對象”,往往讓很多熟悉其他面向語言(Java、C#、C++)的程式員覺得似懂非懂或者難以適應。所以,本文首先將向大家介紹,javascript 中常見的建立對象的幾種方式。

1. 簡單對象的建立 使用對象字面的方式{} 建立一個對象(最簡單,好理解,推薦使用)

var Cat  = {};//JSON  Cat.name="kity";//添加屬性並賦值  Cat.age=2;  Cat.sayHello=function(){   alert("hello "+Cat.name+",今年"+Cat["age"]+"歲了");//可以使用“.”的方式訪問屬性,也可以使用HashMap的方式訪問  }  Cat.sayHello();//調用對象的(方法)函數

2.用function(函數)來類比class (無參建構函式)

2.1 建立一個對象,相當於new一個類的執行個體

function Person(){  } var personOne=new Person();//定義一個function,如果有new關鍵字去"執行個體化",那麼該function可以看作是一個類 personOne.name="dylan"; personOne.hobby="coding"; personOne.work=function(){ alert(personOne.name+" is coding now..."); }  personOne.work();

2.2 可以使用有參建構函式來實現,這樣定義更方便,擴充性更強(推薦使用)

function Pet(name,age,hobby){    this.name=name;//this範圍:當前對象    this.age=age;    this.hobby=hobby;    this.eat=function(){       alert("我叫"+this.name+",我喜歡"+this.hobby+",也是個吃貨");    } } var maidou =new Pet("麥兜",5,"睡覺");//執行個體化/建立對象   maidou.eat();//調用eat方法(函數)

3.使用工廠方式來建立(Object關鍵字)

var wcDog =new Object();  wcDog.name="旺財";  wcDog.age=3;  wcDog.work=function(){    alert("我是"+wcDog.name+",汪汪汪......");  }   wcDog.work();

4.使用原型對象的方式 prototype關鍵字

function Dog(){    }  Dog.prototype.name="旺財";  Dog.prototype.eat=function(){  alert(this.name+"是個吃貨");  }  var wangcai =new Dog();  wangcai.eat();

5.混合模式(原型和建構函式)

function Car(name,price){   this.name=name;   this.price=price;  }  Car.prototype.sell=function(){    alert("我是"+this.name+",我現在賣"+this.price+"萬元");   }  var camry =new Car("凱美瑞",27); camry.sell(); 

6.動態原型的方式(可以看作是混合模式的一種特例)

function Car(name,price){   this.name=name;   this.price=price;    if(typeof Car.sell=="undefined"){    Car.prototype.sell=function(){     alert("我是"+this.name+",我現在賣"+this.price+"萬元");    }  Car.sell=true;   } }  var camry =new Car("凱美瑞",27); camry.sell();

以上幾種,是javascript中最常用的建立對象的方式。初學者看到後,可能會暈掉,甚至會覺得擔心。其實完全不用擔心,這些種方式,只需要掌握一兩種,對其他的幾種只需要理解就好了。這正是javascript的靈活性。沒有固定的推薦方式選擇自己最容易理解和掌握的方式即可。每個人的代碼風格可能都不同。將來你可能需要去研究jQuery的源碼,或者參照別的外掛程式去改寫、去開發屬於自己的外掛程式,都需要去理解別人的代碼風格。而這些類庫、外掛程式,都是建立在物件導向/基於對象的基礎只上的。

好了,本文就先介紹到這裡。由於筆者表達能力和技術水平確實有限,難免有偏差,望讀者諒解!

 

相關文章

聯繫我們

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