原生JS實(shí)現(xiàn)NEW,帶參數(shù)

new的使用方法是 var a = new 構(gòu)造函數(shù)劳淆,a就是這個構(gòu)造函數(shù)的一個實(shí)例。
放上一張?jiān)玩湹膱D

image.png

因此需要這個實(shí)例a.proto =構(gòu)造函數(shù).prototype
而我們知道括勺,a是一個對象曲掰,創(chuàng)建對象的幾種方法中,有一種是Object.create.

var o = Object.create(P)

等同于

o.__proto__ === P//true

因此如何創(chuàng)建a呢乱豆,就是

var o = Object.create(func.prototype);

new運(yùn)算符的步驟
第一步:
一個新的對象被創(chuàng)建宛裕。它是繼承構(gòu)造函數(shù)的原型對象
第二步:
構(gòu)造函數(shù)被執(zhí)行。執(zhí)行的時候揩尸,相應(yīng)的傳參會被傳入,同時上下文會被指定為這個新的實(shí)例错负。
第三步:
如果這個構(gòu)造函數(shù)返回了一個對象勇边,那么這個對象就是實(shí)例的結(jié)果,也就是我們的a识颊,如果沒有返回對象的怀浆,你們new處理的結(jié)果為步驟1創(chuàng)建的對象怕享。

因此實(shí)現(xiàn)代碼:

function New(func) {
    // 創(chuàng)建一個空對象,繼承構(gòu)造函數(shù)的原型對象
    var res = Object.create(func.prototype);
    // 執(zhí)行構(gòu)造函數(shù)沙合,傳遞上下文和參數(shù)
    var ret = func.apply(res, Array.prototype.slice.call(arguments, 1));
    if (typeof ret === 'object' && ret !== null) {
        return ret
    } else {
        return res
    }
}
//測試代碼:
function Person(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayName = function () {
        alert(this.name);
    };
}
var p1 = New(Person, "Ysir", 24, "stu");
console.log(p1)
var a = New(Array)
console.log(a)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末首懈,一起剝皮案震驚了整個濱河市谨敛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌最仑,老刑警劉巖泥彤,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卿啡,死亡現(xiàn)場離奇詭異,居然都是意外死亡剑逃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門梆奈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亩钟,“玉大人,你說我怎么就攤上這事清酥≡搪拢” “怎么了昆雀?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長揩懒。 經(jīng)常有香客問我挽封,道長,這世上最難降的妖魔是什么辅愿? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮阔蛉,結(jié)果婚禮上癞埠,老公的妹妹穿的比我還像新娘。我一直安慰自己燕差,他們只是感情好徒探,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著央串,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稳摄。 梳的紋絲不亂的頭發(fā)上厦酬,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天瘫想,我揣著相機(jī)與錄音,去河邊找鬼减噪。 笑死筹裕,一個胖子當(dāng)著我的面吹牛窄驹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扎运,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扯罐!你這毒婦竟也來了烦衣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秸歧,失蹤者是張志新(化名)和其女友劉穎键菱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體经备,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侵蒙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了算凿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犁功。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖戒努,靈堂內(nèi)的尸體忽然破棺而出储玫,到底是詐尸還是另有隱情萤皂,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布端礼,位于F島的核電站蛤奥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凡桥。R本人自食惡果不足惜缅刽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一衰猛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刹孔,春花似錦啡省、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽微姊。三九已至,卻和暖如春分预,著一層夾襖步出監(jiān)牢的瞬間兢交,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工笼痹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留配喳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓凳干,卻偏偏與公主長得像晴裹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子救赐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容