最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中new運算符的實現(xiàn)過程解析

 更新時間:2019年10月30日 08:56:22   作者:卑微小陳的隨筆  
這篇文章主要介紹了JavaScript中new運算符的實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了JavaScript中new運算符的實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

廢話不多說直接進入正題,首先我們需要先知道new運算符到底做了哪些事情,再來模擬它實現(xiàn)這一功能。

1. 建立一個空的Object對象;

2. 把這個空對象用__proto__鏈接到原型

3. 用apply綁定對象的this指向

4. 返回新的對象

知道了new的具體過程之后,我們就可以來試一下用代碼實現(xiàn)這一過程。

// 傳參 New(obj, ...args)
function New() {
  let obj = new Object();
  // 提取第一個參數(shù)并作為構造函數(shù);
  let construction = [].shift.call(arguments);
  // 新對象的__prop__要鏈接到原型鏈
  obj.__proto__ = construction.prototype;
  // 改變this指向
  construction.apply(obj, arguments);
  // 返回新對象
  return obj;
}

下面對自定義的New方法進行驗證:

function People(name,age){
  this.name = name;
  this.age = age;
}
People.prototype.say = function () {
  console.log(`My name is ${this.name}.`);
}
//通過new創(chuàng)建構造實例
let people1 = new People('Jack',20);
console.log(people1.name)  // Jack
console.log(people1.say()) // My name is Jack.

//通過New方法創(chuàng)造實例
let people2 = New(People,'Rose',18);
console.log(people2.name)  //Rose
console.log(people2.say())  //My name is Rose.

通過輸出結果可以看出來,我們自己定義的New方法,是可以實現(xiàn)跟new運算符同等作用的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java實現(xiàn)注冊登錄系統(tǒng)

    java實現(xiàn)注冊登錄系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)注冊登錄系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 基于Java回顧之反射的使用分析

    基于Java回顧之反射的使用分析

    本篇文章是對Java反射的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • java正則替換括號中的逗號實現(xiàn)示例

    java正則替換括號中的逗號實現(xiàn)示例

    本文主要介紹了java正則替換括號中的逗號實現(xiàn)示例,主要介紹了兩種示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Java 實現(xiàn)對稱加密算法

    Java 實現(xiàn)對稱加密算法

    這篇文章主要介紹了Java 實現(xiàn)對稱加密算法的相關資料,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-11-11
  • java如何獲取byte的高四位和低四位

    java如何獲取byte的高四位和低四位

    這篇文章主要介紹了java如何獲取byte的高四位和低四位,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot整合ActiveMQ過程解析

    SpringBoot整合ActiveMQ過程解析

    這篇文章主要介紹了SpringBoot整合ActiveMQ過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 一文帶你解讀所有HashMap的面試題

    一文帶你解讀所有HashMap的面試題

    HashMap在面試的時候,是非常容易被問到的。因為在JDK8出來之后,非常容易被問到關于HashMap的知識點,而如果對于沒有研究過他的源代碼的同學來說,這個可能只是說出一部分來。本文就把HashMap上面大部分會被在面試中問到的內(nèi)容,做個總結,希望有所幫助
    2022-09-09
  • Java進階之高并發(fā)核心Selector詳解

    Java進階之高并發(fā)核心Selector詳解

    前幾篇文章介紹了Java高并發(fā)的一些基礎內(nèi)容,認識了Channel,Buffer和Selector的基本用法,有了感性認識之后,來看看Selector的底層是如何實現(xiàn)的。,需要的朋友可以參考下
    2021-05-05
  • Java實現(xiàn)讀取文件夾下(包括子目錄)所有文件的文件名

    Java實現(xiàn)讀取文件夾下(包括子目錄)所有文件的文件名

    這篇文章主要介紹了Java實現(xiàn)讀取文件夾下(包括子目錄)所有文件的文件名,本文把代碼組織成了一個模塊,可以很方便的使用,需要的朋友可以參考下
    2015-06-06
  • 基于Java swing組件實現(xiàn)簡易計算器

    基于Java swing組件實現(xiàn)簡易計算器

    這篇文章主要介紹了基于Java swing組件實現(xiàn)簡易計算器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04

最新評論

玛纳斯县| 北票市| 平江县| 舒兰市| 当涂县| 信阳市| 长宁区| 彩票| 景泰县| 达孜县| 班玛县| 聂荣县| 安乡县| 太湖县| 乌恰县| 盐亭县| 徐闻县| 集安市| 城市| 施甸县| 天台县| 南开区| 宁乡县| 平陆县| 新兴县| 尚义县| 汶上县| 涿州市| 寿光市| 和政县| 长泰县| 江北区| 清苑县| 泸西县| 高密市| 隆昌县| 柞水县| 达拉特旗| 开封县| 凤山县| 织金县|