使用 # 语法,我们现在可以在 ES6 类中创建私有属性,如下所示:
class Person {
#name;
constructor(name) {
this.#name = name;
}
getName() { return this.#name; }
}
let ron = new Person('ron')
ron.#name // undefined
ron.getName(); // ron
Run Code Online (Sandbox Code Playgroud)
以前,在 ES5 中,私有属性很难通过以下方式“伪造”:
function Person(name) {
var name = name;
this.getName = function() {
return name;
}
}
(new Person('ron')).name // undefined
(new Person('ron')).getName() // ron
Run Code Online (Sandbox Code Playgroud)
上面的版本使用了“var”不属于 Person 实例的“this”这一事实。因此,使用“闭包”getName 的力量可以访问“名称”。然而,这样做的问题是 this.getName() 不是原型链的一部分,因此为了将 getName 添加到原型中,我们必须这样做:
Person.prototype.getName = function() { return this.getName(); }
Run Code Online (Sandbox Code Playgroud)
这很令人困惑,而且味道很难闻。
另一种选择是:(使用 ES6 …
我正在使用 Material-ui-pickers 2.2.4 Datepicker 组件。但是,我希望将日期图标放置在左侧而不是右侧(默认)。有什么帮助吗?
尝试了自定义CSS,用CSS包装组件,所有这些黑客方法都失败了。
<MuiPickersUtilsProvider utils={MomentUtils}>
<DatePicker
readOnly
ref='datepicker'
labelFunc={this.formatWeekSelectLabel}
// value=""
onChange={this.handleDateChange}
animateYearScrolling
InputProps={{
disableUnderline: true,
}}
/>
</MuiPickersUtilsProvider>
</MuiThemeProvider>```
Run Code Online (Sandbox Code Playgroud)