Вот кое-что интересное: В любом окне запуска JS:Как возвращается значение getBoundingClientRect неизменяемо?
val = document.body.getBoundingClientRect();
console.log(val)
val.left += 10;
console.log(val)
или любой другой модификации возвращаемого значения. Как этот объект является неизменным?
Это затрудняет утилизацию элемента getBoundingClientRect() для элемента, изменяя исходные значения. Хотя я предполагаю, что вы могли бы воссоздать объект, я не знал, что JS даже имеет возможность неизменных объектов. Это верно?
Я правильно в мышлении нет возможности полиполнять это? –
@ChrisHayes видит это: http://javascript.crockford.com/private.html Кажется очевидным. Если Object.freeze отсутствует, вы можете прототип его создания закрытия и возврата неизменяемых значений. –
Это простой способ получить неизменность, но на самом деле это не то же самое. В конце концов, я не могу применить это к произвольным объектам, и накладные расходы на создание прототипа намного выше, чем просто вызов 'Object.freeze'. [Этот вопрос] (http://stackoverflow.com/questions/13117771/javascript-object-doesnt-support-method-freeze) предлагает метод, но он не кажется полностью совместимым со старыми браузерами. Я полагаю, что это мечта мечты, чтобы она была доступна во всех браузерах. –