为了账号安全,请及时绑定邮箱和手机立即绑定

js 对象实例化计数

js 对象实例化计数

猛跑小猪 2018-10-19 15:11:16
function Person() {     Person.num++ } Person.num = 0for (var i = 0; i < 6; i++) {    var gjy = new Person() }console.log(Person.num)如上代码可以记录Person对象被实例了几次,但是如果进行如下修改为什么就不行了?function Person() {    this.num++ }还有如果输出console.log(gjy.num)为什么不能得到6?是否可以利用原型链来实现这个功能 ?
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

  1. 改为this,并实例化Person后,this指向gjy,实际上执行的是gjy.num++

  2. Person.num = 0中的num属性不会被gjy继承,因此gjy.num为undefined,gjy.num++结果为NaN

  3. 下面代码可以达到你想要的效果

function Person() {
    Person.prototype.num++
}

Person.prototype.num = 0for (var i = 0; i < 6; i++) {    var gjy = new Person()
}console.log(gjy.num)


查看完整回答
反对 回复 2018-11-18
  • 1 回答
  • 0 关注
  • 709 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信