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

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

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

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

廢話不多說直接進(jì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ù)并作為構(gòu)造函數(shù);
  let construction = [].shift.call(arguments);
  // 新對象的__prop__要鏈接到原型鏈
  obj.__proto__ = construction.prototype;
  // 改變this指向
  construction.apply(obj, arguments);
  // 返回新對象
  return obj;
}

下面對自定義的New方法進(jìn)行驗證:

function People(name,age){
  this.name = name;
  this.age = age;
}
People.prototype.say = function () {
  console.log(`My name is ${this.name}.`);
}
//通過new創(chuàng)建構(gòu)造實例
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.

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

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

相關(guān)文章

  • 詳解SpringBoot如何實現(xiàn)緩存預(yù)熱

    詳解SpringBoot如何實現(xiàn)緩存預(yù)熱

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

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

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

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

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

    Java基于堆結(jié)構(gòu)實現(xiàn)優(yōu)先隊列功能示例

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

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

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