Can't get setters/getters to work
Can't get setters/getters to work
我想将Mike Herchel的Importing CSS Breakpoints转换为ES6类。为此,我选择使用get
和set
来最终学习如何。
到目前为止我的代码:
export default class Breakpoints {
constructor() {
this.value = null;
this.refreshValue();
window.addEventListener('resize', () => {
this.refreshValue();
});
}
refreshValue() {
let val = window.getComputedStyle(document.querySelector('body'), ':before').getPropertyValue('content').replace(/'"/g, '');
this.value = val;
}
set value(val) {
this.value = val;
}
get value() {
return this.value;
}
}
问题是,当我运行它时,我得到了Maximum call stack size exceeded
。我哪里做错了?
这里绝对没有理由使用getters/ssetter,它们除了普通属性之外不会做任何其他事情。
当我运行它时,我得到了
Maximum call stack size exceeded
。我哪里做错了?
getter再次返回属性的值,从而调用它自己。您的setter再次设置属性的值,从而调用它自己。不要那样做。
如果出于某种原因你真的想使用getter,那就选择
export default class Breakpoints {
constructor() {
this._val = null;
this.refreshValue();
window.addEventListener('resize', () => {
this.refreshValue();
});
}
refreshValue() {
this._val = window.getComputedStyle(document.querySelector('body'), ':before').getPropertyValue('content').replace(/'"/g, '');
}
get value() {
return this._val;
}
// no `value` setter, because it can't be changed from outside
}
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- jQuery AJAX write to XML
- grep in JQuery to C#
- how to convert html <div> to pdf
- Node.js - POST to iFrame?
- SVG xml to image
- Advantages to DOMParser vs template & innerHTML
- how to split a string with ','
- How to declare a Map containing certain properties with flow
- Php variable obj to js
- 如何在submit to sightly时将表单输入值作为参数传递给WCMUsePojo
- D3JS selectAll to append rect
- Javascript connect to websocket
- Underscore each to update collection
- 在哪里可以找到R-to-JavaScript编译器
- Google闭包和生成的getters/ssetter
- SCEditor BBcode to HTML parsing
- Javascript RegEx to XML Schema RegEx
- How to apply javascript on <asp:Buttonfield>?
- Can't get setters/getters to work