如何在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_
相关产品推荐
相关产品推荐

