JS基礎之對象


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

對象的本質:

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

在JS中對象分為兩種:

  • JS的內建對象,如:string,Date,Array等
  • 你自己創建的對象

JS中如何創建自己的對象:

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

    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的寫法其實是不合理的。最好的方式是原型和構造函數混用的方式來做,比如上面的可以改成這樣

    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方法。如果有對原型不熟悉的同學可以看看這篇廖雪峰大神的作品廖雪峰


最后再做一下總結吧,加深一下印象

  • JS中一切皆對象
  • 對象本質是一系列無序鍵值對的集合
  • 創建對象有兩種常見的方法,初始化器和構造函數(不同情況來進行選擇,並非總是第二種最好)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM