js類 原型 學習筆記

2022-09-14 07:48:09 字數 2134 閱讀 3914

js 內建有很多類,我們用的,都是從這些類例項化出來的。

1

function

object () {}

2function

array () {}

3function

string () {}

4function

boolean () {}

5function function () {}

比如,var a = {};等同於var a = new object();

var a =;等同於var a = new array();

現在我們要建立乙個自定義的類。在smartlist.js中寫下以下**:

1 + function

(flexx)

910 flexx.smartlist = smartlist;//

把類賦值給了xx全域性物件

1112 }(window.xx = window.xx || {});

在main.js中這樣呼叫:

1 + function

() ();

執行結果如下:

在這裡,我們用new呼叫了xx.smartlist(),new 使函式變成乙個建構函式,會默默為我們做一些事情,比如建立了乙個物件,把this指向了這個物件,並且最後返回了這個物件。

下面來看看new呼叫函式和直接呼叫函式有什麼不同。

1 + function

(flexx) 89

var list1 =smartlist();

10var list2 = new

smartlist();

11 console.log('list1 是', list1);

12 console.log('list2 是', list2);

1314 flexx.smartlist =smartlist;

1516 }(window.xx = window.xx || {});

執行結果如下:

用new呼叫函式時,函式內部的this指向建立的物件,函式返回值也是建立的物件。return會影響直接呼叫函式的返回值,但不會影響new呼叫的函式的返回值(這個自行測試)。

我們可以在初始化時給物件乙個list屬性,用來存我們的list資料。

new以後,這個memberlist物件就有了list屬性。

下面說原型。比如,我們為這個類,建立乙個原型方法叫 update,我希望通過這個來更新列表的資料。

從console中可以看出,原型方法被放在乙個隱藏的 __proto__ 屬性中。看物件根屬性上的proto,展開所顯示的不透明的,就是這個物件從類繼承過來的原型方法,所有從這個類建立的物件上,都擁有這個update方法。

於是我在update方法中可以將我的list重新整理。

可以看到 list 更新為了我們傳入的陣列。

下面又建立了乙個 getdata方法,用來獲取這個物件上的list資料。

這就是最有名的 set 和 get方法。

最後,感謝大神cx的講解。

JS原型鏈學習筆記

animal擁有name屬性和laugh方法 dog 繼承 animal jiwawa 吉娃娃 是dog 的例項 1,錯誤,dog只是animal的例項,不是繼承自它的後嗣 1 function animal name 4 5var dog new animal dog 6console.log d...

JS學習筆記 原型和物件

建構函式 function person age 通過原型新增方法 person.prototype.sayhi function var per newperson 男 20 console.log per.proto constructor person.prototype.constructo...

javascript類和原型學習筆記

js中類的所有例項物件都從同乙個原型物件上繼承屬性。我們可以自己寫乙個物件建立的工廠方法來來 模擬 這種繼承行為 inherit 返回乙個繼承自原型物件p的屬性的性物件 這裡使用ecmascript5中的object.create 函式 如果不存在該函式,則使用另一種方法 function inhe...