首页 > 其他 > 详细

一道面试题

时间:2019-05-16 00:34:57      阅读:115      评论:0      收藏:0      [点我收藏+]

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

new A() // 输出2

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

 

..

=========================

*还有另外一个注意的地方,关于class,

注意 class{} 中 只有方法能加static(加static 即为静态属性,方法是挂在构造函数上的)

属性不能加 static ,es6没有这个实现,可以通过babel转

一道面试题

原文:https://www.cnblogs.com/eret9616/p/10873071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!