new筆記

omnoob發表於2019-07-14

搜尋: 方應航 new

例子

var object = new Object()
複製程式碼

自由屬性 空
object.proto === Object.prototype

var array = new Array(`a`,`b`,`c`) 
複製程式碼

自由屬性 0: 'a' 1:'b' 2:'c' array.proto === Array.prototype
Array.protype.proto === Object.prototype

var fn = new Function('x','y','return x+y')
複製程式碼

自由屬性 length:2,不可見的函式體: 'return x+y' fn.proto === Function.prototype

Array is a function Array = function(){...} Array.proto === Function.prototype

注意

使用new時,需要記錄下來是誰創造了這個物件。所以會有一個預設的prototyoe = {constructor: 士兵},如果我們直接對prototype賦一個物件,那麼原來的prototype就會被回收。那麼有兩種方法可以解決這個問題:

  1. 在士兵.prototype={···}中新增 constructor: 士兵
  2. 在原有的士兵.prototype上新增屬性,比如 士兵.prototype.兵種 ="美國大兵"

相關文章