JS 中 對象 基礎認識

俗話說:「萬物皆對象」,在 Javascript  中除了原始值幾乎所有的東西都可以看做對象:

  • 布爾是對象( new 關鍵詞定義)
  • 數字是對象( new 關鍵詞定義)
  • 字元串是對象( new 關鍵詞定義)
  • 日期永遠都是對象
  • 算術永遠都是對象
  • 正則表達式永遠都是對象
  • 數組永遠都是對象
  • 函數永遠都是對象
  • 對象永遠都是對象

 

一、什麼是原始值

Javascript 中原始值是指沒有屬性和方法的值。

原始數據類型(擁有原始值的類型):

  • string
  • number
  • boolean
  • null
  • undefined

 

二、什麼是對象

「萬物皆對象」,在 Java 中對象的定義:對象就是存在的具體實體,具有明確定義的狀態和行為,是面向對象編程的核心,用來描述現實世界中的實體,為電腦應用程式提供實體基礎,也是完成特定任務一個封裝。

Javascript 中的對象是包含變數的變數,但是對象能夠包含很多值。可以理解為:對象是屬性和方法的命名值得容器 

var person = {firstName:"Coder", lastName:"Yarn", age:22, eyeColor:"black"};

 

對象命名值 對象屬性

屬性
firstName Coder
lastName Yarn
age 22
eyeColor black

 

對象方法:方法是可以在對象上執行的動作,即在對象身上發生的事件

屬性 方法
fullName function() {return this.firstName + ” ” + this.lastName;}

 

三、對象的創建

創建對象主要三種方法:

  • 對象字面量;
    var person = {
        firstName:"Coder", 
        lastName:"Yarn", 
        age:22, 
        eyeColor:"black",
        fullName:function() {
            return this.firstName + " " + this.lastName;
        },
    };
  • new object();
    let person = new Object();
        person.firstName = "Coder"; 
        person.lastName = "Yarn";
        person.age = 22; 
        person.eyeColor = "black";
        person.fullName = function() {
            return this.firstName + " " + this.lastName;
        };
  • 自定義構造函數;
    function Person(){
        constructor(firstName,lastName,age,eyeColor){
            this.firstName = firstName;
            this.lastName = lastName;
            this.age = age;
            this.eyeColor = eyeColor;
        };
        this.fullName = function() {
            return this.firstName + " " + this.lastName;
        };
    };
    
    var person1 = new Person("Coder","Yarn",22,"black");
    
    console.log(personl);
    console.log(person1.fullName());
    
    //列印的結果
    Coder
    Yarn
    22
    black
    Coder Yarn

 

注意:出於簡易性、可讀性和執行速度的考慮不會使用第二種方法(new Object()),而是使用第一種創建方法(對象字面量方法)。

在 ES5 中為了簡化程式碼,將對象共同擁有的屬性和方法都放在同一個函數中,這個函數就是我們自定義的構造函數,即 Java 中的類,然後可以通過 new 一個實例對象來使用這些屬性和方法,不過這種方法特別地浪費記憶體。 ES6 後幾乎都使用對象字面量方法來創建對象。