javascript作為一門面向?qū)ο蟮木幊陶Z言,構造對象是非常重要的一個部分。在javascript中,我們可以使用構造函數(shù)或?qū)ο笞置媪康姆绞絹順嬙鞂ο蟆1疚膶槟敿毥榻Bjavascript構造對象的相關知識。
一、構造函數(shù)
構造函數(shù)是用于創(chuàng)建特定類型對象的函數(shù)。要創(chuàng)建一個構造函數(shù),我們可以使用function關鍵字并給函數(shù)起一個名字。在構造函數(shù)內(nèi)部,我們可以使用this關鍵字來引用該對象的屬性或方法。
下面的代碼展示了一個Person構造函數(shù)的例子,它可以用來創(chuàng)建一個具有name和age屬性的Person對象:
function Person(name, age) { this.name = name; this.age = age; } var person1 = new Person("張三", 20); var person2 = new Person("李四", 25); console.log(person1.name); // "張三" console.log(person2.age); // 25第一行代碼創(chuàng)建了一個名為Person的構造函數(shù),它有兩個參數(shù),分別是name和age。在函數(shù)體內(nèi),我們使用this.name和this.age來給對象設置屬性。接下來的兩行代碼分別用Person構造函數(shù)創(chuàng)建了person1和person2兩個Person對象,并分別給它們賦了初始值。最后兩行代碼分別輸出了person1的name屬性和person2的age屬性。 二、對象字面量 對象字面量是一種快速創(chuàng)建對象的方式。它用{}中包含的屬性和屬性值來定義一個對象。在對象字面量中,我們可以直接使用屬性名稱來定義屬性名和屬性值。 下面的代碼展示了一個使用對象字面量創(chuàng)建一個Person對象的例子:
var person = { name: "張三", age: 20, sayHello: function() { console.log("我是" + this.name + ",今年" + this.age + "歲。"); } } console.log(person.name); // "張三" console.log(person.age); // 20 person.sayHello(); // "我是張三,今年20歲。"第一行代碼使用對象字面量創(chuàng)建了一個名為person的Person對象,并給它設置了name和age兩個屬性。接下來的幾行代碼分別輸出了person的name屬性和age屬性,并調(diào)用了它的sayHello方法。注意,在sayHello方法中,我們使用了this關鍵字來引用對象本身。 三、構造函數(shù)與對象字面量的區(qū)別 構造函數(shù)和對象字面量在創(chuàng)建對象時有一些不同之處。使用構造函數(shù)創(chuàng)建對象時,每個對象都是獨立的實例,它們之間沒有共享的屬性或方法。而使用對象字面量創(chuàng)建對象時,每個對象都共享同一個原型對象,這意味著它們可以共享屬性和方法。 下面的代碼展示了一個使用構造函數(shù)和對象字面量分別創(chuàng)建Person對象的例子:
function Person(name, age) { this.name = name; this.age = age; } Person.prototype.sayHello = function() { console.log("我是" + this.name + ",今年" + this.age + "歲。"); } var person1 = new Person("張三", 20); var person2 = new Person("李四", 25); person1.sayHello(); // "我是張三,今年20歲。" person2.sayHello(); // "我是李四,今年25歲。" var person = { name: "王五", age: 30 } person.sayHello = function() { console.log("我是" + this.name + ",今年" + this.age + "歲。"); } person.sayHello(); // "我是王五,今年30歲。"在這個例子中,我們首先定義了一個Person構造函數(shù)和它的原型對象,并用它們來創(chuàng)建了person1和person2兩個不同的Person對象。然后,我們使用對象字面量創(chuàng)建了一個名為person的Person對象,并為它擴展了一個sayHello方法。最后,我們分別調(diào)用了這三個對象的sayHello方法。 從這個例子中可以看出,使用構造函數(shù)創(chuàng)建的兩個Person對象person1和person2之間沒有任何關聯(lián),它們各自擁有自己的name和age屬性和sayHello方法。而使用對象字面量創(chuàng)建的person對象則可以直接為它添加新的屬性或方法,這些屬性或方法將被所有使用這個對象的代碼共享。