国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

五行代碼實現(xiàn) JavaScript 中的 new 關(guān)鍵字

WelliJhon / 2345人閱讀

摘要:以這種方式調(diào)用構(gòu)造函數(shù)實際上會經(jīng)歷以下個步驟創(chuàng)建一個新對象將構(gòu)造函數(shù)的作用域賦給新對象因此就指向了這個新對象執(zhí)行構(gòu)造函數(shù)中的代碼為這個新對象添加屬性返回新對象。

JS 高程中的解釋

要創(chuàng)建 Person 的新實例,必須使用 new 操作符。以這種方式調(diào)用構(gòu)造函數(shù)實際上會經(jīng)歷以下 4 個步驟:
(1) 創(chuàng)建一個新對象;
(2) 將構(gòu)造函數(shù)的作用域賦給新對象(因此 this 就指向了這個新對象);
(3) 執(zhí)行構(gòu)造函數(shù)中的代碼(為這個新對象添加屬性);
(4) 返回新對象。

看了這個原理,想試著寫下實現(xiàn)過程,雖然不夠嚴(yán)謹(jǐn)。至少核心思想是體現(xiàn)出來了。

模擬實現(xiàn):

// 先寫一個構(gòu)造函數(shù)
function Person (name){
    this.name = name
}

// myNew 方法實現(xiàn)
function myNew(fn){
    let obj = Object.create(fn.prototype) // 創(chuàng)建一個對象,并將構(gòu)造函數(shù)的原型對象賦給新創(chuàng)建的對象,即生成的實例與構(gòu)造函數(shù)的原型對象關(guān)聯(lián)
    let res = fn.apply(obj, Array.prototype.slice.call(arguments, 1)) // 函數(shù)執(zhí)行(為該對象賦屬性)
    return obj // 返回該對象
}
console.log(p1 instanceof Person) // true
console.log(myNew(Person, "Tom")) // Person{ "name":"Tom" }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/104052.html

相關(guān)文章

  • 初識python

    很早就聽說python的赫赫大名了,這學(xué)期學(xué)校也開了這門課,正好可以感受一下這門語言的魅力,對比C/C++/JAVA,它到底有什么獨(dú)特的地方呢? Life is short, you need Python --Bruce Eckel人生苦短,我用python 一. 初印象:short 曾經(jīng)有這樣一個段子,說聯(lián)合國同樣一份檔案,用五大官方語言寫的不同版本中,最薄的那份一定是漢語的。 這個段子...

    gitmilk 評論0 收藏0
  • Java8新特性第1章(Lambda表達(dá)式)

    摘要:一表達(dá)式匿名內(nèi)部類最大的問題在于其冗余的語法,比如前面的中五行代碼僅有一行是在執(zhí)行任務(wù)。總結(jié)基于詞法作用域的理念,表達(dá)式不可以掩蓋任何其所在上下文的局部變量。 轉(zhuǎn)載請注明出處:https://zhuanlan.zhihu.com/p/20540175 在介紹Lambda表達(dá)式之前,我們先來看只有單個方法的Interface(通常我們稱之為回調(diào)接口): public interface...

    ningwang 評論0 收藏0
  • JS修仙之一界本源

    摘要:時間一晃就是數(shù)月,齊云早已把界基本情況了解了,不過至于三座大山里隱藏的謎團(tuán)卻遲遲沒有頭緒。它是界本源之一。事實上,根本沒有構(gòu)造函數(shù),或者人人都是構(gòu)造函數(shù)。所以,明白這個界的一界本源,才能在這里暢游天地之間。 自計算機(jī)宇宙誕生以來,有很多大神通者在這里開天辟地,開創(chuàng)了很多界,有C、C++、Java等世界,它們彼此相連,其中有一處叫做JavaScript的世界,自被開辟以來吸引了很多修行者...

    I_Am 評論0 收藏0
  • 100行代碼讓您學(xué)會JavaScript原生的Proxy設(shè)計模式

    摘要:面向?qū)ο笤O(shè)計里的設(shè)計模式之代理模式,相信很多朋友已經(jīng)很熟悉了。代表當(dāng)前執(zhí)行方法的實例,即方法調(diào)用者。代表具體的方法名稱。現(xiàn)在我們再次調(diào)用,傳入構(gòu)造器返回的代理對象打印輸出,代理邏輯生效了和的一樣優(yōu)雅地實現(xiàn)了代理設(shè)計模式。 showImg(https://segmentfault.com/img/remote/1460000016760603);面向?qū)ο笤O(shè)計里的設(shè)計模式之Proxy(代理...

    txgcwm 評論0 收藏0
  • JavaScript 編程精解 中文第三版 六、對象的秘密

    摘要:在編程文化中,我們有一個名為面向?qū)ο缶幊痰臇|西,這是一組技術(shù),使用對象和相關(guān)概念作為程序組織的中心原則。這是構(gòu)造器函數(shù)的作用。因此,上面的類聲明等同于上一節(jié)中的構(gòu)造器定義。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:The Secret Life of Objects 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考...

    ddongjian0000 評論0 收藏0

發(fā)表評論

0條評論

WelliJhon

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<