我怎样才能得到console.log输出的getter结果,而不是string“”?

在这个代码中:

function Cls() { this._id = 0; Object.defineProperty(this, 'id', { get: function() { return this._id; }, set: function(id) { this._id = id; }, enumerable: true }); }; var obj = new Cls(); obj.id = 123; console.log(obj); console.log(obj.id); 

我想得到{_id:123,id:123},但是我得到{_id:123,id:[Getter / Setter]}

有没有办法让getter的值被console.log函数使用?

使用console.log(JSON.stringify(obj));

你可以使用console.log(Object.assign({}, obj));

您可以在对象上定义inspect方法,并导出您感兴趣的属性。请参阅以下文档: https : //nodejs.org/api/util.html#util_custom_inspection_functions_on_objects

我想这应该是这样的:

 function Cls() { this._id = 0; Object.defineProperty(this, 'id', { get: function() { return this._id; }, set: function(id) { this._id = id; }, enumerable: true }); }; Cls.prototype.inspect = function(depth, options) { return `{ 'id': ${this._id} }` } var obj = new Cls(); obj.id = 123; console.log(obj); console.log(obj.id);