JS对象中,在原型链上找到属性后 最终将值拷贝给原对象 而不是引用
遇到一个面试题
要求写一个函数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
..