我怎样才能得到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);