要求写一个函数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