關於new命令

2021-09-29 04:51:01 字數 1934 閱讀 6379

js中有一種說法,叫做一切皆為物件。物件是什麼呢?大話來講,物件是一種容器,裡面封裝了屬性和方法。在每天程式設計中,最基本的事情也是頻繁的幹的事情就是建立乙個物件,然後使用它幹各種各樣的事情。建立物件的方法有建構函式建立、語法糖建立、還有new命令建立。當然,本文的標題已經表明這次的主角是new關鍵字了。

new命令的作用,就是執行建構函式,返回乙個例項物件。

ps:如果忘了使用new命令,建構函式就變成了普通函式,並不會生成例項物件。

// 1、不帶引數情況

var vehicle = function () ;

var v = new vehicle();

v.price // 1000

// 2、帶引數情況

var vehicle = function (p) ;

var v = new vehicle(500);

當然,為了保證建構函式必須與new命令一起使用兩種方法。

方法一:建構函式內部使用嚴格模式,即第一行加上use strict。這樣的話,一旦忘了使用new命令,直接呼叫建構函式就會報錯。

function fubar(foo, bar)

fubar()

// typeerror: cannot set property '_foo' of undefined

方法二:建構函式內部判斷是否使用new命令,如果發現沒有使用,則直接返回乙個例項物件。

function fubar(foo, bar) 

this._foo = foo;

this._bar = bar;

}fubar(1, 2)._foo // 1

(new fubar(1, 2))._foo // 1

面試的時候常常會問道,使用new命令時,會發生什麼。

1、建立乙個空物件,作為將要返回的物件例項。

2、將這個空物件的原型,指向建構函式的prototype屬性。

3、將這個空物件賦值給函式內部的this關鍵字。

4、開始執行建構函式內部的**。

注意:如果建構函式內部有return語句,而且return後面跟著乙個物件,new命令會返回return語句指定的物件;否則,就會不管return語句,返回this物件。

例子1

var vehicle = function () ;

(new vehicle()) === 1000

// false

例子2

var vehicle = function ();

};(new vehicle()).price

// 2000

另一方面,如果對普通函式(內部沒有this關鍵字的函式)使用new命令,則會返回乙個空物件。

function getmessage() 

var msg = new getmessage();

msg // {}

typeof msg // "object"

function _new(/* 建構函式 */ constructor, /* 構造函式引數 */ params) 

// 例項

var actor = _new(person, '張三', 28);

c 關於new檔案

new檔案用來管理c 的動態記憶體,這個檔案宣告了幾個全域性空間的函式 不是std空間的函式,全域性空間的函式呼叫時是用全域性作用域解析符 包括operator new 和operator delete的過載 這些函式用於處理動態儲存空間請求。其new的標頭檔案源 ifndef new define...

new命令的原理

function person name,age var person new person 小明 18 console.log person.name 小明 console.log person.age 18建立乙個空物件,這個物件將會是new person 返回的物件例項 將這個空物件的原型指向...

關於new注意事項

file main.cpp author vicky include include include class user user const char username virtual user void sayhello char username 20 int main void 建立乙個u...