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

JavaScript中實例化與非實例化的區(qū)別與應(yīng)用場景詳解

 更新時間:2025年09月01日 10:21:07   作者:編程隨想_Code  
在學(xué)習(xí) JavaScript 的過程中,很多同學(xué)都會遇到這樣的問題:為什么有的函數(shù)直接調(diào)用就能用,而有的必須要通過 new 來實例化,這背后其實就是 實例化 和 不實例化 的區(qū)別,本文就帶你從概念、代碼示例、應(yīng)用場景幾個方面深入探究,需要的朋友可以參考下

引言

在學(xué)習(xí) JavaScript 的過程中,很多同學(xué)都會遇到這樣的問題:為什么有的函數(shù)直接調(diào)用就能用,而有的必須要通過 new 來實例化?

這背后其實就是 實例化不實例化 的區(qū)別。本文就帶你從概念、代碼示例、應(yīng)用場景幾個方面,深入理解它們的不同。

一、什么是實例化?

實例化(Instantiation)指的是通過 構(gòu)造函數(shù)(Constructor)類(Class) 創(chuàng)建一個具體的對象實例(Instance)。

在 JavaScript 中,通常使用 new 關(guān)鍵字來完成實例化。例如:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

const p1 = new Person("張三", 20); // 實例化
console.log(p1.name); // 張三

這里:

  • Person 是一個構(gòu)造函數(shù);
  • new Person("張三", 20) 就是對 Person 的實例化,返回了一個具體的對象。

二、不實例化是什么?

所謂不實例化,就是直接調(diào)用函數(shù),而不使用 new。此時函數(shù)只是作為普通函數(shù)執(zhí)行,不會創(chuàng)建對象實例。

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person("李四", 22); // 不實例化
console.log(window.name); // 瀏覽器環(huán)境下 -> 李四

在上面的代碼中:

  • 沒有 new,所以 this 指向全局對象(瀏覽器中是 window,Node.js 中是 global)。
  • 導(dǎo)致屬性 name、age 被掛載到了全局對象上,而不是新建的對象實例中。

三、實例化和不實例化的區(qū)別

我們可以從幾個角度來看它們的不同:

對比點(diǎn)實例化(new 調(diào)用)不實例化(直接調(diào)用)
返回值返回一個對象實例返回函數(shù)本身的返回值(若無返回值則是 undefined
this 指向指向新創(chuàng)建的對象指向調(diào)用環(huán)境(嚴(yán)格模式下是 undefined,非嚴(yán)格模式下是 window
用途創(chuàng)建對象,封裝屬性和方法普通函數(shù)調(diào)用,執(zhí)行邏輯或計算
內(nèi)存結(jié)構(gòu)會在堆內(nèi)存中創(chuàng)建一個獨(dú)立的對象實例沒有獨(dú)立對象實例,只是執(zhí)行代碼
適用場景類、構(gòu)造函數(shù)、面向?qū)ο箝_發(fā)工具函數(shù)、業(yè)務(wù)邏輯函數(shù)

四、舉個例子:類和工具函數(shù)

1. 構(gòu)造函數(shù)/類(需要實例化)

class Animal {
  constructor(type) {
    this.type = type;
  }
  speak() {
    console.log(`${this.type} 在叫`);
  }
}

const dog = new Animal("狗"); // 實例化
dog.speak(); // 狗 在叫

這里必須使用 new,否則會報錯:Class constructor Animal cannot be invoked without 'new'。

2. 工具函數(shù)(不需要實例化)

function add(a, b) {
  return a + b;
}

console.log(add(1, 2)); // 3

像這種純粹計算的函數(shù),只需直接調(diào)用即可,不需要也不能實例化。

五、總結(jié)

  • 實例化:用 new 調(diào)用構(gòu)造函數(shù)/類,返回對象實例,適合創(chuàng)建可復(fù)用的對象結(jié)構(gòu)。
  • 不實例化:直接調(diào)用函數(shù),執(zhí)行邏輯或返回結(jié)果,適合寫工具函數(shù)或業(yè)務(wù)邏輯函數(shù)。

簡單一句話概括:

要創(chuàng)建對象時用實例化;只是執(zhí)行邏輯時不用實例化。

寫在最后

在實際開發(fā)中,你可以根據(jù)需求來選擇:

  • 如果是 構(gòu)造對象/封裝屬性方法 —— 用 new 實例化;
  • 如果是 簡單邏輯處理/工具函數(shù) —— 直接調(diào)用,不需要實例化。

到此這篇關(guān)于JavaScript中實例化與非實例化的區(qū)別與應(yīng)用場景詳解的文章就介紹到這了,更多相關(guān)JavaScript實例化與非實例化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS函數(shù)進(jìn)階之prototy用法實例分析

    JS函數(shù)進(jìn)階之prototy用法實例分析

    這篇文章主要介紹了JS函數(shù)進(jìn)階之prototy用法,結(jié)合實例形式分析了JavaScript函數(shù)中使用prototy擴(kuò)展屬性相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • 5秒后跳轉(zhuǎn)到另一個頁面的js代碼

    5秒后跳轉(zhuǎn)到另一個頁面的js代碼

    跳轉(zhuǎn)到另一個頁面的方法有很多,在本文將為大家詳細(xì)介紹下js中如何實現(xiàn)5秒后跳轉(zhuǎn)到另一個頁面,感興趣的朋友可不要錯過
    2013-10-10
  • JavaScript常見數(shù)組方法之如何轉(zhuǎn)置矩陣

    JavaScript常見數(shù)組方法之如何轉(zhuǎn)置矩陣

    這篇文章主要給大家介紹了關(guān)于JavaScript常見數(shù)組方法之如何轉(zhuǎn)置矩陣的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • BootStrap 智能表單實戰(zhàn)系列(二)BootStrap支持的類型簡介

    BootStrap 智能表單實戰(zhàn)系列(二)BootStrap支持的類型簡介

    這篇文章主要介紹了BootStrap 智能表單實戰(zhàn)系列(二)BootStrap支持的類型簡介 的相關(guān)資料,非常不錯具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • 深入解析ECMAScript?2023?中的新數(shù)組方法

    深入解析ECMAScript?2023?中的新數(shù)組方法

    ECMAScript?是一種標(biāo)準(zhǔn)化的腳本語言,它是?JavaScript?的規(guī)范。ECMAScript?2023?是?JavaScript?編程語言的更新,旨在帶來改進(jìn)并使?JavaScript?程序可預(yù)測和可維護(hù),這篇文章主要介紹了探索?ECMAScript?2023?中的新數(shù)組方法,需要的朋友可以參考下
    2023-12-12
  • two.js之實現(xiàn)動畫效果示例

    two.js之實現(xiàn)動畫效果示例

    本篇文章主要介紹了two.js之實現(xiàn)動畫效果示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • JavaScript操作localStorage實現(xiàn)保存本地json文件

    JavaScript操作localStorage實現(xiàn)保存本地json文件

    這篇文章主要為大家詳細(xì)介紹了JavaScript如何操作localStorage實現(xiàn)保存本地json文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • JavaScript SHA512&SHA256加密算法詳解

    JavaScript SHA512&SHA256加密算法詳解

    本文給大家分享的是javascript版的SHA512&SHA256加密算法的代碼,以及用法,有需要的小伙伴可以參考下。
    2015-08-08
  • 如何讓div span等元素能響應(yīng)鍵盤事件操作指南

    如何讓div span等元素能響應(yīng)鍵盤事件操作指南

    在我這幾天的工作中遇到了一個問題,我有一個可編輯的div,并且在DIV里面還有一個可編輯的span,我想要讓span能響應(yīng)鍵盤事,想實現(xiàn)這種效果,應(yīng)該如何實踐呢
    2012-11-11
  • 解決JSON.stringify()自動將中文轉(zhuǎn)譯成unicode的問題

    解決JSON.stringify()自動將中文轉(zhuǎn)譯成unicode的問題

    下面小編就為大家分享一篇解決JSON.stringify()自動將中文轉(zhuǎn)譯成unicode的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

隆尧县| 古田县| 江北区| 武威市| 红桥区| 明光市| 张掖市| 海晏县| 横山县| 松桃| 喜德县| 麻城市| 婺源县| 抚远县| 景东| 黎平县| 夹江县| 德惠市| 明光市| 天全县| 哈尔滨市| 阳新县| 教育| 板桥市| 韶山市| 海原县| 唐河县| 武义县| 赤峰市| 伊川县| 綦江县| 韩城市| 江门市| 洪雅县| 大竹县| 浪卡子县| 衡水市| 绵阳市| 荣昌县| 乐昌市| 建湖县|