要求写一个函数A,每次进行new操作时候能输出2,3,4,5...

new A() // 输出2

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

new A() // 输出3

new A() // 输出4

 

 

 

function A()

{

  this.a++

  console.log(this.a)

}

A.prototype.a = 1

 

这样写是错误的,因为实例化对象中的a属性并不是原型上的引用,而是把原型上的a给拷贝了一份给a。

所以这样每次输出都是2.

 

 

正确答案:

function A()

{

  this.__proto__.a++

  console.log(this.a)

}

 

A.prototype.a = 1

 

// 2,3,4,5..

 

 

或者其实我挂载到函数上成为静态属性也可以

 

function A(){

  console.log(this.__proto__.constructor.a++)

}

A.a = 1

 

..

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄