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

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

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

引言

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

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

一、什么是實(shí)例化?

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

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

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

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

這里:

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

二、不實(shí)例化是什么?

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

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

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

在上面的代碼中:

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

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

我們可以從幾個(gè)角度來(lái)看它們的不同:

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

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

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

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

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

這里必須使用 new,否則會(huì)報(bào)錯(cuò):Class constructor Animal cannot be invoked without 'new'

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

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

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

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

五、總結(jié)

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

簡(jiǎn)單一句話(huà)概括:

要?jiǎng)?chuàng)建對(duì)象時(shí)用實(shí)例化;只是執(zhí)行邏輯時(shí)不用實(shí)例化。

寫(xiě)在最后

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

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

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

相關(guān)文章

最新評(píng)論

台湾省| 克东县| 贵港市| 贵德县| 绥化市| 将乐县| 方正县| 瓮安县| 临猗县| 防城港市| 长沙县| 拉萨市| 湟中县| 杂多县| 稷山县| 新兴县| 荥阳市| 江安县| 信宜市| 安溪县| 昌吉市| 巫山县| 晴隆县| 兴文县| 新蔡县| 宿迁市| 甘泉县| 南召县| 葵青区| 舒城县| 青龙| 宁安市| 柘城县| 衡阳县| 军事| 博野县| 自贡市| 呼图壁县| 和田县| 长泰县| 阳朔县|