日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

js中的new file_JS中的new操作符

發(fā)布時(shí)間:2025/3/8 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中的new file_JS中的new操作符 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是new?

眾所周知,在JS中,new的作用是通過構(gòu)造函數(shù)來創(chuàng)建一個(gè)實(shí)例對象。

像下面這樣:(和普通函數(shù)不一樣,當(dāng)函數(shù)用作 構(gòu)造函數(shù) 時(shí),首字母一般要大寫,以作區(qū)分。)

function Foo(name) { this.name = name;}console.log("new Foo('mm')的類型:",typeof new Foo('mm')); // objectconsole.log("Foo的類型:",typeof Foo); // function

二、new經(jīng)歷了什么過程?

Foo明明只是一個(gè)函數(shù),可是為什么new Foo()執(zhí)行后會(huì)突然返回一個(gè)對象呢?

我們從結(jié)果出發(fā)可以推斷出,既然返回了一個(gè)對象,那么這事肯定和 對象 有關(guān)系。

實(shí)際上new幫我們做了這樣幾件事:

  • 幫我們創(chuàng)建了一個(gè)空對象,例如:obj;
  • 將空對象原型的內(nèi)存地址 __proto__ 指向函數(shù)的原型對象;(這里涉及到了 原型鏈 的知識)
  • 利用函數(shù)的call方法,將原本指向window的綁定對象this指向了obj。(這樣一來,當(dāng)我們向函數(shù)中再傳遞實(shí)參時(shí),對象的屬性就會(huì)被掛載到obj上。)
  • 利用函數(shù)返回對象obj。
  • 三、new的過程分析

    function Foo(name) { this.name = name; return this;}var obj = {};obj.__proto__ = Foo.prototype;// Foo.call(obj, 'mm');var foo = Foo.call(obj, 'mm');console.log(foo);

    分析:

    首先預(yù)編譯,聲明提升,解釋執(zhí)行。

    執(zhí)行時(shí)按照順序來進(jìn)行,

    • obj指向空對象;
    • obj的原型地址指向構(gòu)造函數(shù)Foo的原型對象;
    • 執(zhí)行 Foo.call(obj, 'mm');this.name = name; 通過函數(shù)的 call方法 將this綁定到obj(也就是說this就是obj),實(shí)參mm傳入構(gòu)造函數(shù)Foo中,這樣this.name = ‘mm’,那么obj.name = ‘mm’,也就是說name屬性被掛載到obj對象上。return this; 就是return obj,這樣obj這個(gè)對象就被返回出來了。
    • 將結(jié)果賦值給變量foo。
    • 打印結(jié)果。

    四、總結(jié)

    第三部分的代碼直接用 new 構(gòu)造函數(shù) 效果是相同的。

    function Foo(name) { this.name = name;}var foo = new Foo('mm');console.log(foo);

    簡而言之,new操作符幫我們做了四件事:

  • 創(chuàng)建空對象;
  • 空對象的原型指針指向構(gòu)造函數(shù)的原型對象;
  • 利用函數(shù)的call方法改變this指向,在空對象上掛載屬性或方法;
  • 返回對象。
  • 總結(jié)

    以上是生活随笔為你收集整理的js中的new file_JS中的new操作符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。