欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中new運算符的實現過程解析

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

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

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

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

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

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

4. 返回新的對象

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

// 傳參 New(obj, ...args)
function New() {
  let obj = new Object();
  // 提取第一個參數并作為構造函數;
  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方法,是可以實現跟new運算符同等作用的。

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

相關文章

  • Java接口冪等性設計原理解析

    Java接口冪等性設計原理解析

    這篇文章主要介紹了Java接口冪等性設計原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • MyBatis的9種動態(tài)標簽詳解

    MyBatis的9種動態(tài)標簽詳解

    大家好,本篇文章主要講的是MyBatis的9種動態(tài)標簽詳解,感興趣的同學趕快來看一看吧,感興趣的同學趕快來看一看吧
    2021-12-12
  • Java中MessageFormat的使用詳解

    Java中MessageFormat的使用詳解

    本文主要介紹了Java中MessageFormat的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • RestTemplate get請求攜帶headers自動拼接參數方式

    RestTemplate get請求攜帶headers自動拼接參數方式

    這篇文章主要介紹了RestTemplate get請求攜帶headers自動拼接參數方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java面試題之數組中的逆序對

    java面試題之數組中的逆序對

    這篇文章主要為大家詳細介紹了java面試題之數組中的逆序對,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 詳解SpringBoot如何實現緩存預熱

    詳解SpringBoot如何實現緩存預熱

    緩存預熱是指在 Spring Boot 項目啟動時,預先將數據加載到緩存系統(如 Redis)中的一種機制,下面我們就來看看SpringBoot是如何實現緩存預熱的吧
    2024-01-01
  • java文件輸出流寫文件的幾種方法

    java文件輸出流寫文件的幾種方法

    這篇文章主要介紹了java文件輸出流寫文件的幾種方法,需要的朋友可以參考下
    2014-04-04
  • java實現動態(tài)驗證碼

    java實現動態(tài)驗證碼

    這篇文章主要為大家詳細介紹了java實現動態(tài)驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java基于堆結構實現優(yōu)先隊列功能示例

    Java基于堆結構實現優(yōu)先隊列功能示例

    這篇文章主要介紹了Java基于堆結構實現優(yōu)先隊列功能,結合實例形式分析了java優(yōu)先隊列的簡單定義與使用方法,需要的朋友可以參考下
    2017-11-11
  • Spring Cloud 部署時使用 Kubernetes 作為注冊中心和配置中心的方法

    Spring Cloud 部署時使用 Kubernetes 作為注冊中心和配置中

    Spring Cloud Kubernetes提供了使用Kubernete本地服務的Spring Cloud通用接口實現,這篇文章主要介紹了Spring Cloud 部署時如何使用 Kubernetes 作為注冊中心和配置中心,需要的朋友可以參考下
    2024-05-05

最新評論