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

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

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

引言

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

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

一、什么是實例化?

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

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

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

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

這里:

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

二、不實例化是什么?

所謂不實例化,就是直接調用函數(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)。
  • 導致屬性 name、age 被掛載到了全局對象上,而不是新建的對象實例中。

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

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

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

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

1. 構造函數(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ù),只需直接調用即可,不需要也不能實例化。

五、總結

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

簡單一句話概括:

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

寫在最后

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

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

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

相關文章

  • 捕獲瀏覽器關閉、刷新事件不同情況下的處理方法

    捕獲瀏覽器關閉、刷新事件不同情況下的處理方法

    在做一些關于會員在線的問題時,往往我們要根據覽器是否關閉來判斷用戶是否下線,然后再從session和application中將此用戶移除,下面與大家分享下具體的捕捉方法
    2013-06-06
  • JS仿淘寶搜索框用戶輸入事件的實現(xiàn)

    JS仿淘寶搜索框用戶輸入事件的實現(xiàn)

    這篇文章主要介紹了JS仿淘寶搜索框用戶輸入事件的實現(xiàn),需要的朋友可以參考下
    2017-06-06
  • javascript 網頁跳轉的方法

    javascript 網頁跳轉的方法

    昨天練習的時候正好要用到跳轉代碼,在網上找了一下,覺得下面幾個不錯...整理了一下發(fā)上來...
    2008-12-12
  • 原生JS京東輪播圖代碼

    原生JS京東輪播圖代碼

    這篇文章主要為大家詳細介紹了原生JS京東輪播圖代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 快速解決js動態(tài)改變dom元素屬性后頁面及時渲染的問題

    快速解決js動態(tài)改變dom元素屬性后頁面及時渲染的問題

    下面小編就為大家?guī)硪黄焖俳鉀Qjs動態(tài)改變dom元素屬性后頁面及時渲染的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JSscript標簽有哪些屬性

    JSscript標簽有哪些屬性

    本文介紹了JSscript標簽有哪些屬性,向HTML頁面中插入JavaScript的主要方法,就是使用script>元素.這個元素由Netscape創(chuàng)造并在NetscapeNavigator2中首先實現(xiàn).后來,這個元素被加入到正式的HTML規(guī)范中,下面小編來講解下JSscript標簽有哪些屬性,需要的朋友可以參考下
    2022-01-01
  • layui頁面級彈出框的實現(xiàn)

    layui頁面級彈出框的實現(xiàn)

    本文主要介紹了layui頁面級彈出框的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 分享ES6?20個經常使用技巧

    分享ES6?20個經常使用技巧

    這篇文章主要分享ES6?20個經常使用技巧,作用是使JavaScript語言可以用來編寫復雜的大型應用程序,成為企業(yè)級開發(fā)語言,具體使用詳情需要的小伙伴可以參考下面文章內容
    2022-06-06
  • 深入學習JS?XML和Fetch請求

    深入學習JS?XML和Fetch請求

    這篇文章主要介紹了深入學習JS?XML和Fetch請求,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 微信小程序淘寶首頁雙排圖片布局排版代碼(推薦)

    微信小程序淘寶首頁雙排圖片布局排版代碼(推薦)

    這篇文章主要介紹了微信小程序淘寶首頁雙排圖片布局排版代碼,本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10

最新評論