【问题标题】:RangeError: Maximum call stack size exceeded for Node.jsRangeError:Node.js 超出了最大调用堆栈大小
【发布时间】:2016-09-26 07:30:56
【问题描述】:

我在 JS 中创建了模型脚本,所以我可以传入一个对象并添加一些逻辑和值。我使用 get/set 来生成值,但是当我运行我的代码时,它会抛出 RangeError:超出最大调用堆栈大小。有谁知道谁来修复这个错误?

var model = {
    get id() {
        return this.id ; 
    },
    set id(id) {
        this.id = id || '';
    },
    get filename(){
      return this.filename ; 
    },
    set filename(name){
      this.filename = name || ''; 
    },
    get savename(){
      return this.savename ; 
    },
    set savename(name){
      this.savename = name || ''; 
    },
    get filetype(){
      return this.filetype ; 
    },
    set filetype(name){
      this.filetype = name || ''; 
    }
};

module.exports = function(parm){
  model.id = parm.id ; 
  model.filename = parm.filename ; 
  model.savename = parm.savename ; 
  modle.filetype = parm.filetype;
  return model ; 
}; 

【问题讨论】:

    标签: javascript node.js model set callstack


    【解决方案1】:
    get id() {
        return this.id ; 
    },
    

    您已经为名为“id”的属性定义了一个 getter。您的 getter 实现表明它应该从对象返回属性“id”的值。

    为了获取属性“id”的值,系统首先检查该属性是否存在 getter。在这种情况下,有,所以 getter 被调用。

    二传手也是如此。

    除了对象属性的值之外,您必须将实际属性值保存在其他地方,否则您将遇到您遇到的问题。

    get id() {
      return this._id;
    },
    set id(value) {
      this._id = value || "";
    },
    

    您不必完全那样做;这只是一种有效的方式。

    【讨论】:

    • 谢谢,该错误具有误导性。我猜是因为我同时拥有 get/set 和 _var,这可能不是实现我想要的最佳方式。
    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 2020-11-19
    • 2013-08-23
    • 2021-09-07
    • 2017-11-12
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多