JavaScript中有關new的問題
涉及面試題:
new
的原理是什麼?通過new
的方式建立物件和通過字面量建立有什麼區別?
在呼叫 new
的過程中會發生四件事情
- 新生成了一個物件
- 連結到原型
- 繫結
this
- 返回新物件
根據以上幾個過程,我們也可以試著來自己實現一個
new
- 建立一個空物件
- 獲取建構函式
- 設定空物件的原型
- 繫結
this
並執行建構函式 - 確保返回值為物件
function create() {
let obj = {}
let Con = [].shift.call(arguments)
obj.__proto__ = Con.prototype
let result = Con.apply(obj, arguments)
return result instanceof Object ? result : obj
}
- 對於物件來說,其實都是通過
new
產生的,無論是function Foo()
還是let a = { b : 1 }
。 - 對於建立一個物件來說,更推薦使用字面量的方式建立物件(無論效能上還是可讀性)。因為你使用
new Object()
的方式建立物件需要通過作用域鏈一層層找到Object
,但是你使用字面量的方式就沒這個問題
function Foo() {}
// function 就是個語法糖
// 內部等同於 new Function()
let a = { b: 1 }
// 這個字面量內部也是使用了 new Object()
相關文章
- css3中有關transform的問題CSSS3ORM
- 關於javascript的this指向問題JavaScript
- 伺服器租用中有關頻寬的幾個問題伺服器
- JavaScript new 關鍵詞解析及原生實現 newJavaScript
- 關於使用 Laravel new 新專案 報錯的問題Laravel
- 業務分析中有關詞彙表的常見問題 - modernanalystNaN
- JavaScript專題之模擬實現newJavaScript
- JavaScript中的new map()和new set()使用詳細(new map()和new set()的區別)JavaScript
- javascript的this指向問題JavaScript
- JavaScript new 運算子JavaScript
- javascript模擬new的實現JavaScript
- JavaScript 模擬new的實現JavaScript
- JavaScript中有用的Array和Object方法JavaScriptObject
- javascript使用new建立物件JavaScript物件
- JavaScript手寫new方法JavaScript
- JavaScript變數,資料和記憶體的相關問題JavaScript變數記憶體
- javascript 中function(){},new function(),new Function(),Function 摘錄JavaScriptFunction
- Java中有關stringJava
- Javascript中new的執行過程JavaScript
- 關於new Object的探究Object
- javascript中的各種問題JavaScript
- JavaScript 手寫new運算子JavaScript
- JavaScript中new實現原理JavaScript
- JavaScript之call, apply, bind, new的實現JavaScriptAPP
- JavaScript中this指向問題JavaScript
- 有關模型關聯的問題模型
- 10個最常見的JavaScript問題JavaScript
- javascript的物件問題及總結JavaScript物件
- Javascript 中的克隆(拷貝)問題JavaScript
- 關於火狐和IE下href=”javascript:void(0)”相容性的問題JavaScript
- 無意中發現頁面中有隱藏的樣式BUG問題
- 關於this指向的問題
- javascript的call apply和new原理剖析 [手寫]JavaScriptAPP
- 關於盒模型相關的問題模型
- java.lang.OutOfMemoryError- unable to create new native thread 問題排查JavaErrorthread
- 新手必看!使用New File Menu常見問題集錦
- 解決new Thread().Start導致高併發CPU 100%的問題thread
- 最失敗的 JavaScript 面試問題JavaScript面試