首頁 web前端 js教程 详解new function(){}和function(){}() 区别分析_js面向对象

详解new function(){}和function(){}() 区别分析_js面向对象

May 16, 2016 pm 07:05 PM
new 區別分析

情景一:
var yx01 = new function() {return "圆心"};
alert(yx01);
我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于:

function 匿名类(){
    return "圆心";
}
var yx01 = new 匿名类();
alert(yx01);我们对情景一的代码进行下面改造:

var yx01 = new function() {return new String("圆心")};
alert(yx01);
我们运行,将会发现返回的是“圆心”,这是为什么呢?

只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象
由于 new String 会构造一个对象,而不是一个 string 直接量,且new String(x) 如果带参数,那么alert它的时候就会返回 x。所以 yx01 将返回 new String(”圆心”) 这个对象,而 alert yx01 则显示 “圆心”。

情景二:

var yx02 = function() {return "圆心"}();
alert(yx02);我们运行情景二代码,将返回显示“圆心”,此时该代码等价于:

var 匿名函数 = function() {return "圆心"};
yx02 = 匿名函数();
alert(yx02);很明显,yx02 返回的是匿名函数的执行结果值,即 yx02 为:“圆心”。

当然匿名函数的执行结果也可以为一个匿名对象。具体常见应用可以看《Javascript的一种模块模式

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入解析lenb函數與len函數的差異 深入解析lenb函數與len函數的差異 Jan 28, 2024 am 10:02 AM

深入解析lenb函數與len函數的區別,需要具體程式碼範例在Python程式語言中,字串是一種常見的資料類型,並且經常需要對字串進行相關操作和處理。在字串處理的過程中,我們常常會使用到取得字串長度的函數。 Python提供了兩個內建函數來取得字串的長度,分別是lenb函數和len函數。儘管它們的函數名稱非常相似,但它們實際上在處理字串長度上有著重要的區

go語言中make和new的差別是什麼 go語言中make和new的差別是什麼 Jan 09, 2023 am 11:44 AM

區別:1、make只能用來分配及初始化類型為slice、map、chan的資料;而new可以分配任意類型的資料。 2.new分配返回的是指針,即類型「*Type」;而make返回引用,即Type。 3.new分配的空間會被清除;make分配空間後,會初始化。

java中的new關鍵字怎麼用 java中的new關鍵字怎麼用 May 03, 2023 pm 10:16 PM

1.概念在Java語言裡,「new」表達式是負責建立實例的,其中會呼叫構造器去對實例做初始化;構造器本身的回傳值類型是void,並不是「建構器回傳了新建立的物件的參考”,而是new表達式的值是新建立的物件的參考。 2.用途新建類別的物件3.工作機制為物件成員分配記憶體空間,並指定預設值對成員變數進行明確初始化執行建構方法計算並傳回參考值4.實例new操作往往意味著記憶體中的開啟新的記憶體空間,這個記憶體空間分配在記憶體中的堆區,受到jvm控制,自動進行記憶體管理。這裡我們就是用String這個類別來舉例說明。 pu

C語言與其他程式語言的比較與區別 C語言與其他程式語言的比較與區別 Mar 21, 2024 pm 09:27 PM

C語言是一種通用程式語言,廣泛應用於系統軟體開發、嵌入式系統以及遊戲開發等領域。相較之下,其他程式語言如Python、Java、JavaScript等在不同領域也有著各自的優勢。本文將對C語言與其他程式語言進行比較與區別,並給予具體的程式碼範例進行說明。首先,C語言是一種過程化程式語言,著重對電腦底層的控制與最佳化。與之不同的是,Python是一種物件導向的

js中new運算子工作原理是什麼 js中new運算子工作原理是什麼 Feb 19, 2024 am 11:17 AM

js中new運算元工作原理是什麼,需要具體程式碼範例js中的new操作符是用來建立物件的關鍵字。它的作用是根據指定的建構函數建立一個新的實例對象,並傳回該對象的參考。在使用new運算元時,實際上進行了以下幾個步驟:建立一個新的空物件;將該空物件的原型指向建構函式的原型物件;將建構函式的作用域賦給新物件(因此this指向了新物件);執行建構函式中的程式碼,並給新對

全新富士固定鏡頭 GFX 相機將首次推出全新的中片幅感光元件,可能開啟全新系列 全新富士固定鏡頭 GFX 相機將首次推出全新的中片幅感光元件,可能開啟全新系列 Sep 27, 2024 am 06:03 AM

近年來,富士膠片取得了巨大的成功,這主要歸功於其膠片模擬技術以及其緊湊型測距相機在社交媒體上的流行。然而,據 Fujirumors 稱,它似乎並沒有滿足於現狀。你

如何使用Java中的clone()方法來取代new關鍵字? 如何使用Java中的clone()方法來取代new關鍵字? Apr 22, 2023 pm 07:55 PM

使用clone()取代new在Java中新建物件實例最常用的方法是使用new關鍵字。 JDK對new的支援非常好,使用new關鍵字建立輕量級物件時,速度非常快。但是,對於重量級對象,由於物件在建構函式中可能會進行一些複雜且耗時的操作,因此,建構函式的執行時間可能會比較長。導致系統短期內無法獲得大量的實例。為了解決這個問題,可以使用Object.clone()方法。 Object.clone()方法可以繞過建構函數,快速複製一個物件實例。但是,在預設情況下,clone()方法產生的實例只是原始物件的淺拷

See all articles