【问题标题】:Where are a JavaScript's class' instance methods stored? [duplicate]JavaScript 的类的实例方法存储在哪里? [复制]
【发布时间】:2017-08-18 02:05:18
【问题描述】:

给定:

var car = class Car{
    drive() {}
    park(){}
}

给定汽车,我怎样才能找到这个类有哪些方法, 即“开车”和“停车”? 我会以为他们在

汽车.原型

这是真的

car.prototype.drive

返回方法 和

car.prototype.hasOwnProperty("drive") => true

但是

for(let prop_name in car.prototype){
    console.log(prop_name)
}

什么都不打印。

【问题讨论】:

  • for in 很奇怪。
  • 不确定是什么问题?
  • 您回答了自己的问题:它们存储在原型对象中。为什么for in 不枚举它们,以及如何访问它们,请参阅副本。

标签: javascript class methods


【解决方案1】:

该属性不可枚举 (car.prototype.propertyIsEnumerable("drive") === false),因此它不显示它。见MDN

for...in 语句迭代一个可枚举的属性 对象,按原始插入顺序

否则你是对的,函数在原型上。

请注意,这是不是和实例方法。正如名称已经暗示的那样,每个实例存在一个实例方法。您可以生成实例方法,例如与

class car {
  constructor() {
    this.instanceFunc = () => {};
  }
}

注意这里明确new car().instanceFunc !== new car().instanceFunc

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2021-09-07
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多