js 內建有很多類,我們用的,都是從這些類例項化出來的。
1比如,var a = {};等同於var a = new object();function
object () {}
2function
array () {}
3function
string () {}
4function
boolean () {}
5function function () {}
var a =;等同於var a = new array();
現在我們要建立乙個自定義的類。在smartlist.js中寫下以下**:
1 + function在main.js中這樣呼叫:(flexx)
910 flexx.smartlist = smartlist;//
把類賦值給了xx全域性物件
1112 }(window.xx = window.xx || {});
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...