You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中获取构造函数的值?附Base_Model类相关代码

在JavaScript中获取构造函数的值的几种方法

结合你给出的模型类代码,我来一步步说明怎么获取构造函数相关的值:

首先先把你的代码整理出来方便参考:

// Base_Model.js
var connection = require('../config/db.js');
class Base_Model{
  constructor(){}
  readAll(params){
    return new Promise( ( resolve, reject ) => {
      // 小提醒:SQL表名占位符应该用双问号??,单问号是用于普通值绑定的
      connection.query("SELECT * FROM ??", [params.table], function(err, rows, fields) {
        if ( err ) {
          return reject( err );
        }
        return resolve(rows);
      });
    });
  }
}
module.exports = Base_Model;

// Venue_Model.js(作为Base_Model的子类)
var connection = require('../config/db.js');
var Base_Model = require('./Base_Model.js');
class Venue_Model extends Base_Model {
  constructor() {
    super(); // 调用父类构造函数
  }
  // 可添加子类专属方法
}
module.exports = Venue_Model;

接下来是具体的获取方法:

1. 获取实例对应的构造函数引用

当你创建了类的实例后,通过实例.constructor就能拿到它的构造函数本身,还能进一步获取构造函数的名称等信息:

const baseModel = new Base_Model();
console.log(baseModel.constructor); // 输出Base_Model构造函数本身
console.log(baseModel.constructor.name); // 输出字符串"Base_Model",获取构造函数名称

const venueModel = new Venue_Model();
console.log(venueModel.constructor); // 输出Venue_Model构造函数
console.log(venueModel.constructor.name); // 输出"Venue_Model"

2. 在类内部访问构造函数(含子类访问父类构造函数)

  • 在类的方法里,this.constructor会指向当前实例的构造函数(子类实例对应的就是子类构造函数):
class Venue_Model extends Base_Model {
  constructor() {
    super();
  }
  logConstructor() {
    console.log(this.constructor); // 输出Venue_Model
    console.log(this.constructor.name); // 输出"Venue_Model"
  }
}
  • 如果想在子类里访问父类的构造函数,直接用父类的类名(比如Base_Model)或者通过super.constructor即可:
class Venue_Model extends Base_Model {
  constructor() {
    super();
    console.log(Base_Model); // 直接访问父类构造函数
    console.log(super.constructor); // 同样输出Base_Model
  }
}

3. 获取构造函数的静态属性/方法

如果你的类(构造函数)定义了静态属性或方法,直接通过类名就能访问:

class Base_Model{
  static tableName = 'base_table'; // 定义静态属性
  constructor(){}
  static getTableName() { // 定义静态方法
    return this.tableName;
  }
}

// 直接通过类名访问静态成员
console.log(Base_Model.tableName); // 输出'base_table'
console.log(Base_Model.getTableName()); // 输出'base_table'

内容的提问来源于stack exchange,提问作者hfbachri_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:50:16