JavaScript深入之new的模擬實現

2021-09-22 19:04:04 字數 1762 閱讀 8045

function

otaku (name, age)

// 因為缺乏鍛鍊的緣故,身體強度讓人擔憂

otaku.prototype.strength

=60;

otaku.prototype.sayyourname

=function ()

var person =

newotaku('kevin'

, '18'

);console.log(person.name) // kevin

console.log(person.habit) // games

console.log(person.strength) // 60

person.sayyourname(); // i am kevin

訪問到 otaku.prototype 中的屬性

otaku ()

// 使用 new

var person =

newotaku(……);

// 使用 objectfactory

var person =

objectfactory(otaku, ……)

function

objectfactory() ;

取出第乙個引數,就是我們要傳入的建構函式。此外因為 shift 會修改原陣列,所以 arguments 會被去除第乙個引數

將 obj 的原型指向建構函式,這樣 obj 就可以訪問到建構函式原型中的屬性

返回 obj

otaku (name, age)

otaku.prototype.strength

=60;

otaku.prototype.sayyourname

=function ()

function

objectfactory() ;

var person =

objectfactory(otaku, 'kevin'

, '18'

)console.log(person.name) // kevin

console.log(person.habit) // games

console.log(person.strength) // 60

person.sayyourname(); // i am kevin

otaku (name, age)

}var person =

newotaku('kevin'

, '18'

);console.log(person.name) // kevin

console.log(person.habit) // games

console.log(person.strength) // undefined

console.log(person.age) // undefined

otaku (name, age)

var person =

newotaku('kevin'

, '18'

);console.log(person.name) // undefined

console.log(person.habit) // undefined

console.log(person.strength) // 60

console.log(person.age) // 18

// 第二版的**

function

objectfactory() ;

深入ne 產生DB

概要 當debuggerd處理完後,程式再次回到發生異常的環境,此時還會發生1次異常,同樣的會再次傳送訊號。由於linker裡的debuggerd init 裡註冊的幾個訊號,預設行為都會產生coredump,因此接下來會介紹coredump產生以及db打包過程。tips 到這裡,目標程序已經收到3...

深入JavaScript之call和apply方法

其實只要你認真的研究一下,就會發現我和我哥們一點也不難。有些地方沒有咱倆還真不行。要說咱倆有啥用,我管咱倆的功能叫借過來玩一玩。你看下面的例子啊 let cat sleep function time let dog dog.playball i am a doggy,i love playing ...

深入javascript之原型和原型鏈

所有引用型別 函式,陣列,物件 都擁有 proto 屬性 隱式原型 所有函式擁有prototype屬性 顯式原型 僅限函式 原型物件 擁有prototype屬性的物件,在定義數時就被建立 先複習下建構函式 建立建構函式 function word words word.prototype 建立例項 ...