用原生js實現乙個new?

2021-10-24 05:43:29 字數 1000 閱讀 6902

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 列...