JS基礎之對象

JS中一切皆爲對象,這是一句常說的話。瞭解JS對象,從這句話開始吧。JS中的基本數據類型如number,bool,字符串,數組,null,undefined等等都是對象。

對象的本質:

帶有屬性和方法的特殊數據類型,而每一個屬性或者方法又可看作是一個鍵值對,所以能夠這樣定義:對象是一系列無序鍵值對的集合javascript

在JS中對象分爲兩種:

  • JS的內建對象,如:string,Date,Array等
  • 你本身建立的對象html

    JS中如何建立本身的對象:

    1 對象初始化器,這種方式最爲簡單暴力,直接一系列明顯的鍵值對集合。java

    var obj={
         name:'PengL',
         age:100,
     func:function()
     {
         alert("I am "+obj.name+" and I am  "+obj.age);
     }
     };

    2 構造函數數組

    function person(name,age){
     this.name=name;
     this.age=age;
     this.func=func;
     function func()
     {
         alert("I am "+this.name+" and I am  "+this.age);
     }
     }
     var obj=new person("PengL",100);

    說明:第一種方法是直接建立的一個對象的實例,第二種是經過new構造函數的方式來建立一個對象,而且傳入不一樣的參數,這樣對象對應的屬性值就不同。不過要注意的是不要忘了new,否則就是把一個普通函數賦給了obj,而且這時的this指向也是混亂的了。關於this指向的問題能夠參考一下做者的另外一篇博客javascript進階之this函數

    對於構造函數建立對象的方法我還想再進一步介紹一下

    通常在真實的項目中上面demo的寫法實際上是不合理的。最好的方式是原型和構造函數混用的方式來作,好比上面的能夠改爲這樣this

    function person(name,age)
     {
     this.name=name;
     this.age=age;   
     }
     person.prototype.func=function(){
         alert("I am "+this.name+" and I am  "+this.age);
     };

    這種方式不只結構清楚,最重要的是還節約了內存,在對象的原型上建立的方法,那麼這個方法就是經過該構造函數所建立的全部對象共有的方法了。各個對象有本身獨有的name,age屬性,有共有的func方法。若是有對原型不熟悉的同窗能夠看看這篇廖雪峯大神的做品廖雪峯prototype


最後再作一下總結吧,加深一下印象

  • JS中一切皆對象
  • 對象本質是一系列無序鍵值對的集合
  • 建立對象有兩種常見的方法,初始化器和構造函數(不一樣狀況來進行選擇,並不是老是第二種最好)
相關文章
相關標籤/搜索