搜索: 方应航 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就会被回收。那么有两种方法可以解决这个问题:
- 在士兵.prototype={···}中添加
constructor: 士兵
。 - 在原有的士兵.prototype上添加属性,比如
士兵.prototype.兵种 ="美国大兵"
。