JS原型模式擴充套件

2021-09-24 08:02:08 字數 2262 閱讀 9907

本篇文章 主要接上篇文章 js原型模式

function

fn()

}//擴充套件公有屬性

fn.prototype = ,

gety: function()

}var f = new fn;

f.getx();//100

f.__proto__.getx();//undefined

//在原型模式中 this常用的有兩種情況:

//在類中 this.*** = ***; this ---> 當前類的例項

//在某乙個方法中 this --->看執行的時候 "."前面是誰 this就是誰

1)需要先確定this指向 ---> this是誰

2)把this替換成對應的**

3)按照原型鏈查詢的機制,一步步查詢結果

f.__proto__.getx();//this 是f.__proto__

console.log(f.__proto__.x);//直接忽略了查詢私有的 在公有中查詢發現沒有x --->輸出undefined

fn.prototype.getx();// --->undefined

console.log(fn.prototype.x) //--->undefined

f.gety()

console.log(f.y) // ----> 200

f.__proto__.gety()

console.log(f.__proto__.y) // ---->輸出300

複製**

array.prototype.myunique = function() ;

for(var i = 0; i < this.length; i++)

//如果不重複 先把值放到物件中

obj[cur] = cur;

}obj = null;

return

this;//目的是為了實現鏈式寫法

}複製**

var ary = ;

ary.sort(function(a,b) ).reverse().pop();

複製**

function

fn()

fn.prototype.getx = function()

var f1 = new fn;

複製**

function

fn()

var pro = fn.prototype;

pro.getx = function()

pro.gety = function()

pro.getz = function()

var f1 = new fn;

//把原來原型指向的位址賦值給我們的pro 現在它們操作的是同乙個記憶體空間

複製**

function

fn()

fn.prototype = ,

b: function()

}//{} -->開闢了乙個新的堆記憶體

//js中遇到{} 先開闢堆記憶體 然後存屬性名和屬性值

//自己新開闢乙個堆記憶體,儲存我們公有的屬性和方法,把瀏覽器原來給fn.prototype開闢的那個給替換掉

fn.prototype = //為什麼要增加這一行

1)只有瀏覽器天生給fn.prototype開闢的堆記憶體裡邊才有constructor,而我們自己開闢的這個堆記憶體沒有這個屬性,這樣construcor指向的就不在是fn,而是object了 -->參考示意圖

沒做任何處理之前 輸出object

//為了和原來的保持一致,我們需要手動地增加constructor的指向

2)給內建類增加公有的屬性

如給內建類增加陣列去重的方法

array.prototype =

}//理論上這種方式擴充套件內建類 內建類的原型指向類一塊新記憶體 會把之前已經存在的原型上的屬性和方法給替換掉

//但是用這種方式修改內建類 瀏覽器是給遮蔽掉的(所以不能用來修改內建類)

//不過我們可以乙個個的修改內建類的方法,當我們通過下述方法在陣列的原型上增加方法,如果方法名和原來內建的重複了,會把內建的修改掉

//所以在內建類的原型上增加方法,命名都需要加特殊的字首 避免出現錯誤

array.prototype.sort = function()

複製**

js建立物件 原型模式

原型模式是用來建立物件的,它是在建構函式建立物件基礎上,為了實現資料的共享,這種共享包括屬性的共享,也包括方法的共享。既然原型模式是在建構函式模式的基礎上改進的,那麼這種模式會既有建構函式的特點又有原型模式的特點。關於原型模式的使用方法用一句話總結 不需要共享的資料寫在建構函式中,需要共享的資料寫在...

原型模式與原型鏈(js學習)

物件的原型 prototype 指向另乙個物件,本物件的屬性繼承於他的原型物件。原型物件 原型模式 我們建立的每乙個函式都有乙個prototype 原型 屬性,這個屬性是乙個指標,指向乙個物件。這個物件就是通過呼叫建構函式而建立的那個物件例項的原型物件。使用原型物件,就不必在建構函式中定義物件例項的...

建立型模式 原型模式

使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...