JS自定義物件

2022-06-27 23:18:10 字數 2303 閱讀 8109

目錄使用object或物件字面量建立物件

工廠模式建立物件

建構函式建立物件

原型模式建立物件

js中最基本建立物件的方式:

// object建立物件

var man = new object();

man.name = 'zhangsan';

man.age = 18;

// 字面量建立物件

var man = ;

但是當我們要建立同類物件時,我們不得不將以上的**重複n次....為了解決這個問題,就使用到了工廠模式

js中沒有類的概念,那麼我們使用一種函式將以上物件建立過程封裝起來,以便於重複呼叫,同時可以給出特定介面來初始化物件。

function createman(name,age) 

var man1 = createman('zhangsan',18);

var man2 = createman('lisi',20);

這樣我們就通過函式可以不斷建立同類物件了。

我們不僅希望物件的產生可以像工廠車間一般源源不斷,還想知道產生的型別是哪一種型別。在建立原生陣列array型別物件時,我們就使用過其建構函式:

var arr = new array(10); // 構造乙個初識長度為10的陣列物件
建構函式和普通函式的區別:

呼叫方式區別。對於任意函式,使用new操作符呼叫,那麼它就是建構函式;不使用new就是普通函式。

約定俗成,建構函式名以大寫字母開頭,普通函式以小寫字母開頭。

使用new操作符呼叫建構函式時,會經歷(1)建立乙個新物件;(2)將建構函式作用域賦給新物件(使this指向該物件);(3)執行建構函式**;(4)返回新物件;4個階段。

使用建構函式將工廠模式的函式重寫,並新增新方法:

function student(name,age) ;

}function fruit(name, color) ;

}

這樣再分別建立student和fruit的物件:

var v1 = new student('easy',20);
再用instanceof操作符來檢測以上物件型別就可以區分出student以及fruit了:

alert(v1 instanceof student); //true

alert(v2 instanceof student); // false

alert(v1 instanceof fruit); // false

alert(v2 instanceof fruit); //true

alert(v1 instanceof object); // true 所有物件均繼承自object

使用構造器函式通常在js中我們來建立物件。我們會發現student和fruit物件中共有同樣的方法,當我們進行呼叫的時候這無疑是記憶體的消耗。

我們可以在執行該函式的時候再這樣做,辦法是將物件方法移到建構函式外部:

function student(name, age) 

function alertname()

var stu1 = new student("easy", 20);

var stu2 = new student("easy2", 20);

在調動stu1.alert()時,this物件才被繫結到stu1上。

通過將alertname()函式定義為全域性函式,這樣物件中的alertname屬性則被設定為指向該全域性函式的指標。由此stu1和stu2共享了該全域性函式,解決了記憶體浪費問題。

但是,通過全域性函式的方式解決物件內部共享的問題,終究不像乙個好的解決方法。如果這樣定義的全域性函式多了,我們想要將自定義物件封裝的初衷便幾乎無法實現了。更好的方案是通過原型物件模式來解決。

原型鏈甚至原型繼承,是整個js中最難的一部分也是最不好理解的一部分。

function student() 

student.prototype.alertname = function();

var stu1 = new student();

var stu2 = new student();

stu1.alertname(); //easy

stu2.alertname(); //easy

alert(stu1.alertname == stu2.alertname); //true 二者共享同一函式

JS自定義物件

語法 obj name,age 表示物件obj的屬性名,冒號後面的為屬性值,像這種形式叫鍵值對 skill 是obj物件的方法1.字面量 2.工廠模式 3.建構函式模式 4.原型模式 5.混合模式 原型模式和建構函式模式的混合 var obj console.log obj name 什麼顏色 ob...

js自定義物件

自定義物件和自定義類的區別 自定義物件好用,方便 js建立自定義物件 物件的作用 用來儲存整體資料。原因 很多時候我們沒有辦法預先知道乙個物件應該有哪些屬性,所以只能臨時的建立乙個物件來自定義屬性儲存資料。來保證資料的完成性 應用 ajax中會使用。使用 1 建立自定義物件 var 物件名 new ...

js 自定義物件

1.直接量物件 json 代表乙個物件,包含多組鍵值對.通常key是字串,value是任意型別的資料.2.構造器 首字母大寫的函式 2.1內建構造器 特定 date,array 通用 object 2.2自定義構造器 定義乙個首字母大寫的函式宣告需要呼叫者傳入的引數將傳入的值儲存在此物件上 二.事件...