物件是對資料和行為的抽象,我們可以把一些關聯的資料,和對該資料處理的演算法封裝在一起,並且用乙個名字描述它,這樣我就把一堆東西用乙個名詞表示了,物件對我們隱藏了資料的複雜度,使我可以在思考的時候把系統劃分各種物件,更符合人類的思維,也更容易復用資料
js是原型繼承正規化,沒有類,當你看上乙個物件的時候,你就可以以某個物件為原型建立乙個轉殖了它的物件,object.create(xiaoming);
js裡面的每乙個物件都有乙個原型,這樣優點類似吸血鬼的機制
所有物件的祖先原型為 object.prototype, 該原始原型,躲藏在記憶體深處,只有通過這個object.prototype這條路能找到它,任何物件的屬性查詢,如果原型鏈上都沒,就會查到這個原型鏈條末端的原始物件.
var person = function(name) {
this.name = name;
person.prototype.sayname = function() {
console.log(this.name);
var linhuansen = new person('lihuanseng');
當new的時候發生了什麼
new 運算子,首先在記憶體中開闢了乙個空間,
然後在在該空間新增了 _proto_ 屬性
_proto_: {
該物件為person建構函式的原型物件
即person.prototype
_proto_: {
該物件為祖先原型
即object.prototype指向的原型
然後把該空間繫結到函式的this 上;
建構函式內的**就相當對該物件進行裝飾,給該空間新增一些屬性
建構函式的原型會被所有的new 出來的例項共享,所以會把一些對物件處理的方法,封裝到原型上,
這樣每個物件都可以通過原型鏈條,查詢該原型,訪問上面的方法,做到了節約記憶體
JS 物件 JS原型 原型鏈
參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...
js 原型與原型鏈
5條原型規則 1.所有的引用型別 陣列 物件 函式 都具有物件特性,即可自由擴充套件屬性 除了 null 除外 2.所有的引用型別 陣列 物件 函式 都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件。3.所有的函式,都有乙個prototype 顯式原型 屬性,屬性值也是乙個普通的物件。4...
JS原型物件,原型鏈
js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...