JS建立物件 高階

2021-09-02 20:35:29 字數 1894 閱讀 9874

雖然用object建構函式或物件字面量可以建立單個物件,但有乙個明顯的缺點:使用同乙個介面建立物件,會產生大量重複的**。為此紅寶書中又有三種基本的建立物件的方式:

(1)工廠模式

function createperson(name,age,job)

return o;

}var person1 = createperson("bob",23,"programmer");

var person2 = createperson("jack",21,"secreter");

1>this指向o;

2>雖然解決了建立多個相似物件的問題,但沒法識別物件的型別。

(2)建構函式模式

function person(name,age,job);

}var person1 = new person("bob",32,"programmer");

var person2 = new person("jack",12,"secreter");

1>沒有顯式建立物件;

2>直接將屬性和方法賦值給this物件;

3>沒有return 語句;

4>this指向person;

(3) 原型模式

function person() 

person.prototype.name = "bob";

person.prototype.age = 23;

person.prototype.job = "jack";

person.prototype.sayname = function();

var person1 = new person();

var person2 = new person();

1>使用原型模式的好處就是讓所有物件例項共享它所包含的屬性和方法,不必在建構函式中定義物件例項的資訊,將這些資訊新增到原型物件上;

2>person1和person2訪問的是同一組屬性和同乙個sayname()函式;

(4)class中類的基本語法:

class person

sayname()

}

1>constructor()方法中的this指向例項物件,es5的建構函式person對應es6的person類的constructor方法;

2> typeof person // "function"

person === person.prototype.constructor // true

類的資料型別是函式,類本身指向建構函式。

class person

tostring()

tovalue()

}//等同於

person.prototype = ,

tostring(),

tovalue()

}

let person1 = new person();

person1.constructor === person.prototype.constructor // true

在類的例項上呼叫方法,就是呼叫原型上的方法。

object.assign()方法可以向類新增多個方法:

object.assign(person.prototype,,

tovalue()

})

prototype物件的constructor屬性指向person,這與es5一致。

類的內部定義的所有方法不可列舉,

類的屬性名可以採用表示式。

js物件高階

使用建構函式來建立物件,建構函式相當於乙個模板。模板就是所有建立的物件的型別。instanceof 判斷某個物件是否屬於某個型別。js特性 基本資料型別可以訪問與之對應的物件型別的屬性和行為,在訪問時,自動將基本資料類 型轉換為物件型別。string string number number boo...

js物件導向高階

function student name,age var stu1 new student 張三 18 像這樣需要通過new來使用的函式都可以稱為建構函式 通過this寫進去的,是它的例項方法,可以通過new來呼叫 student.nation china 向這樣直接新增進去的是靜態成員,只能通過...

Js物件高階程式

物件定義為 無序屬性的集合,其屬性可以包含基本值 物件或者函式 物件是由屬性和方法組成的 是乙個無序鍵值對的集合,指的是乙個具體的事物 let obj new object obj.name jack obj.getname function 通過 new 建立的物件,都會在記憶體的堆空間中開啟新的...