new笔记

289 阅读1分钟

搜索: 方应航 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.兵种 ="美国大兵"