在严格模式IE11中不允许分配给只读属性

时间:2016-10-04 11:50:04

标签: javascript internet-explorer internet-explorer-11 use-strict

IE11告诉我var self = this是一个只读变量......但是我的声明点之后我没有给它任何东西。唯一的变量是高度正在变化。尽管如此,我可以在使用var

时更改它

'use strict';

    var onDocumentLoad = require('fe-client-utils/src/dom/onDocumentLoad');
    var onOrientationChange = require('fe-client-utils/src/dom/onOrientationChange');

    var faPageHeight = function () {

    };

    var FA = {
        init: function () {
            this.faAddons = document.querySelector('.fa-addons');
            this.faFooter = document.querySelector('.fa-footer');
            this.extraWideChild = document.querySelector('.extraWide > div');
            this.extraWide = document.querySelector('.extraWide');
            this.faPages = document.querySelector('.fa-pages');
            this.pageContent = document.getElementById('page-content');
            this.faPageItems =  document.querySelectorAll('.fa-page');
            this.moveElements();
            this.faPageHeight();
        },
        faPageHeight: function () {
            var height = 0;
            var self = this;

            Object.keys(self.faPageItems).forEach(function (item, index) {
                height += self.faPageItems[item].offsetHeight;
            });

            height += 150;
            this.extraWideChild.style.height = height+'px';
        },
        moveElements: function () {
            this.faAddons.style = '';

            this.pageContent.appendChild(this.faAddons);
            this.pageContent.appendChild(this.faFooter);

            this.faFooter.style.display = 'block';
        }
    }

    onDocumentLoad(function () {
        FA.init();
    });

    onOrientationChange(function () {
        FA.faPageHeight();
    });

enter image description here

我收到以下错误SCRIPT5045: Assignment to read-only properties is not allowed in strict mode

根据Microsoft,您不应该重写只读属性。我不相信我。那么为什么我会收到错误?

  
      
  • 只读属性
  •   
  • 写入只读属性
  •   
  • SCRIPT5045:严格模式下不允许分配给只读属性
  •   
  • 的JavaScript
  •   
  • var testObj = Object.defineProperties({}, { prop1: { value: 10, writable: false // by default }, prop2: { get: function () { } } }); testObj.prop1 = 20; testObj.prop2 = 30;
  •   

1 个答案:

答案 0 :(得分:3)

这是我曾经期望解决这个问题的最后一件事。我也做了,因为评论已经建议相信它是self var,因为它是保留的。

然而破坏它的线是:

this.faAddons.style = '';

IE建议的行没有任何关系。

当然,我将其设置为删除属性,而不是仅将其设置为空白。

this.faAddons.removeAttribute('style')