javascriptの創建對象

創建對象的基本方法

var box = new Object();             //創建一個Object對象
box.name = 'Lee';                   //創建一個name屬性並賦值
box.age = 100;                      //創建一個age屬性並賦值
box.run = function() {              //創建一個run方法並返回值
    return this.name + this.age + "running...";
}
alert(box.run());                   //輸出屬性和方法的值

上面創建一個對象,並且創建了屬性和方法,在run()方法中的this,代表的是box對象本身.這是最基本的創建對象的方法,但有個缺點,想創建一個類似的對象,會產生大量的代碼.


工廠模式

解決多個類似對象的聲明問題,可解決實例化產生大量代碼重複的問題.

function createObject( name, age ) {
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.run = function() {
        return this.name + this.age + "running...";
    };
    return obj;
}

var box1 = createObject('Lee',10);
var box2 = createObject('Mike',20);

工廠模式解決了重複實例化的問題,但是不能解決識別問題,因爲根本無法搞清楚他們到底是哪個對象的實例.

alert(typeof box1);                 //Object
alert(box1 instanceof Object);      //true

構造函數

ECMAScript中可以採用構造函數(構造方法)來創建特定的對象.類似於Object對象

function Box(name,age) {
    this.name = name;
    this.age = age;
    this.run = function() {
        return this.name + this.age + 'running...';
    }
}

var box1 = new Box('Lee',10);
var box2 = new Box('Mike',20);

使用構造函數,和使用工廠模式的方法的不同之處在於:

  1. 構造函數方法沒有顯示的創建對象(new Object());
  2. 直接將屬性和方法賦值給this對象
  3. 沒有return語句

構造函數的方法的一些規範:

  1. 函數名和實例化構造名相同且大寫(非強制)
  2. 通過構造函數創建對象,必須使用new運算符.

構造函數執行的過程:

  1. 當使用了構造函數,並且new構造函數(),那麼就後臺執行了new Object();
  2. 將構造函數的作用域給新對象,而函數體內的this就代表new Object()出來的對象.
  3. 執行構造函數內的代碼.
  4. 返回新對象(後臺直接返回)

this

this就是代表當前作用域對象的引用.如果在全局範圍this就代表window對象,如果在構造函數體內,就代表當前的構造函數所聲明的對象.

讀寫屬性

讀取對象的屬性,有兩種方法,一種是使用點運算符,還有一種是使用方括號運算符.

var o = {
    p : "Hello World"
};
o.p  //"Hello World"
o["p"]  //"Hello World"

刪除屬性

var o = {p :1};
object.kedys(o)  //["p"]
delete o.p  //true
o.p  //undefined
object.keys(o)  //[]

一旦使用delete命令刪除某個屬性,再讀取該屬性就會返回undefined

with語句

格式

with (object)
    statement

它的作用是操作同一個對象的多個屬性時,提供一些書寫的方便

with (o) {
    p1 = 1;
    p2 = 2;
}

//等同於
o.p1 = 1;
o.p2 = 2;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章