js **還沒執行的時候,js 環境裡已經有乙個 window 物件了,window 物件有乙個 object 屬性,window.object 是乙個函式物件,window.object 這個函式物件有乙個重要屬性是 prototype,window.object.prototype 裡面有 tostring(函式)、valueof(函式)等屬性。
prototype 指向一塊記憶體,這個記憶體裡面有共用屬性
__proto__
指向同一塊記憶體
prototype 和__proto__
的不同點在於
prototype 是建構函式的屬性,而proto是物件的屬性
new例項化的時候,會執行以下操作。
function
create()
function
person
(name, age)
//通過new建立構造例項
let person1 =
newperson
('user1',20
);console.
log(person1)
//通過create方法創造例項
let person2 =
create
(person,
'user2',18
);//呼叫自定義create實現new
new 的作用,就是省那麼幾行**。(即語法糖)《js 的 new 到底是幹什麼的?》
用原生js實現乙個new方法
首先寫乙個父類方法 包含引數name,age function person name,age new乙個person的例項p1做研究對比 var p1 new person richard 22 此時p1包含name age屬性,同時p1的 proto 指向person的prototype p1....
用原生js實現乙個bind方法
bind 方法建立乙個新的函式,當被呼叫時,將其this關鍵字設定為提供的值,在呼叫新函式時,在任何提供之前提供乙個給定的引數序列。這段是來自mdn bind的介紹,我們可以理解bind方法返回乙個新的函式,這個函式內部的this指向提供的引數值,來看個例子 const person const g...
原生 JS 實現乙個瀑布流外掛程式
瀑布流布局中的有乙個核心特點 等寬不定等高,瀑布流布局在國內網 都有一定規模的使用,比如pinterest 花瓣網等等。那麼接下來就基於這個特點開始瀑布流探索之旅。首先我們定義好乙個有 20 張的容器,由於未知的 css 知識點,最長的妹子把下面的空間都占用掉了。接著正文,假如如上圖,每排有 5 列...