js建立物件的幾種方式

2022-07-09 20:57:08 字數 2422 閱讀 5397

字面量:

var o1 =

}

console.log(o1)

console.log(o1

instanceof object) //

true

new操作符:

var o2 = new

object();

o2.name = 'xiaoming';

o2.age = 20,

o2.sayhi = function

()console.log(o2)

console.log(o2

instanceof object) //

true

這種建立方式的缺點顯而易見,每建立乙個物件,都需要設定每乙個屬性,造成大量**重複。

function

cstudent(name,age)

returno;}

var o3 = cstudent('xiaoming',20);

var o4 = cstudent('xiaomei',18);

console.log(o3

instanceof object) //

true

工廠模式解決了上述**重複的問題,但是不知道當前物件是什麼型別,因為全部都是object。

function student(name,age) 

}var o5 = new student('xiaoming',20);

var o6 = new student('xiaomei',20);

console.log(o5.__proto__ == o6.__proto__) //

true

console.log(o5.age == o6.age) //

true

console.log(o5.sayhi == o6.sayhi) //

false

可以看到,o5和o6的原型物件是相同的,屬性age也是相同的,但是sayhi的方法是不同的。也就是說建構函式的例項物件可以繼承屬性,但是不能繼承方法。

function

person() {}

person.prototype.name = 'xiaoming';

person.prototype.age = 20;

person.prototype.sayhi = function

() var o7 = new

person();

var o8 = new

person();

console.log(o7.sayhi == o8.sayhi) //

true

這裡將sayhi方法新增到了person的原型物件上,所以o7和o8訪問的都是同一組屬性和同乙個sayhi()函式。由此衍生出混合模式

function

student(name,age)

student.prototype =

}var o9 = new student('xiaoming',20);

var o10 = new student('xiaomei',20);

console.log(o9.age == o10.age) //

true

console.log(o9.sayhi == o10.sayhi) //

true

可以看出,混合模式共享著對相同方法的引用,又保證了每個例項有自己的私有屬性。最大限度的節省了記憶體。

function

student(name,age)

}}var o11 = new student('xiaoming',20);

var o12 = new student('xiaomei',18);

console.log(o11.sayhi == o12.sayhi) //

true

這裡只在sayhi()方法不存在的情況下,才會將它新增到原型中。

//

new object() 方式建立

var b = new

object(a)

console.log(b)

//{}console.log(b.rep) //

方式建立

var b =object.create(a)

console.log(b)

//{}

console.log(b.__proto__) //

console.log(b.rep) //

new object() 通過建構函式來建立物件, 新增的屬性是在自身例項下。

object.create() es6建立物件的另一種方式,可以理解為繼承乙個物件, 新增的屬性是在原型下。

js 建立物件的幾種方式

一 原始方式 解釋 原始方法建立物件,通過new關鍵字生成乙個物件,然後根據js是動態語言的特性新增屬性和方法,構造乙個物件。其中this是表示呼叫該方法的物件。缺點 多次建立物件,則需要重複 多次,不利於 的復用。二 工廠模式 var getage function var getname fun...

js 建立物件的幾種方式

第一種 工廠模式 例1 function createobj name,age return o var per1 createobj 張三 20 per1.sayinfo 缺點 無法知道物件的型別 第二種 建構函式模式 例2 function person name,age var per2 ne...

js建立物件的幾種方式

雖然object建構函式或物件字面量都可以建立單個物件,但這些方式有個明顯的缺點,那就是使用同乙個介面創造很多物件,會產生大量的重複 所以產生了下面幾種模式。1 工廠模式 function createperson name,age,job o.name name o.age age o.job j...