【问题标题】:Karma: Attempted to assign to readonly property业力:试图分配给只读属性
【发布时间】:2016-07-19 18:46:01
【问题描述】:

我扩展全局对象:

Object.defineProperty(Object.prototype,'getRecursive', {writable: false, value: function(keyChain){
    var keys = keyChain.split('.');

    if(keys.length > 1){
      var currentKey = keys[0];
      keys.splice(0, 1);

      return this.getRecursive.call(this[currentKey], keys.join('.'));
    }

    return this[keys[0]];
  }});

当我运行测试时,我有:TypeError: Attempted to assign to readonly property.node_modules/karma-jasmine/lib/adapter.js

当我将writable 更改为true 时,错误消失了,为什么?

value 上的函数是属性的默认值,writable 应该允许/拒绝更改此值,我错了吗?

【问题讨论】:

    标签: javascript karma-jasmine


    【解决方案1】:

    Object.defineProperty() 上的文档中所述,writable 定义了定义的属性是否可以使用赋值运算符进行修改。

    当可写属性属性设置为false时,该属性为 被称为“不可写”。无法重新分配。

    在严格模式下,这将导致TypeError 如您所述被抛出。 我不确定在node_modules/karma-jasmine/lib/adapter.js 的哪一行引发了错误,但您可能会在那里发现不允许的重新分配,因为getRecursive 属性被标记为不可写。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 2020-10-03
      相关资源
      最近更新 更多