是否可以在ES6类中创建私有属性?
这是一个例子.我怎样才能阻止访问instance.property?
class Something {
constructor(){
this.property = "test";
}
}
var instance = new Something();
console.log(instance.property); //=> "test"
Run Code Online (Sandbox Code Playgroud) 我正在创建我的第一个Bower组件.运行bower init脚本后问我'这个包暴露了什么类型的模块?' 有这些选项:
这些选项有什么区别?
最近,我开始修补React.js,我喜欢它.我从常规ES5开始,为了掌握一切,文档都是用ES5编写的......
但现在我想尝试ES6,因为它有光泽和新颖,它似乎简化了一些事情.令我困扰的是,对于我添加到组件类中的每个方法,我现在必须绑定'this',否则它不起作用.所以我的构造函数最终看起来像这样:
constructor(props) {
super(props);
this.state = { ...some initial state... }
this.someHandler = this.someHandler.bind(this);
this.someHandler = this.someHandler.bind(this);
this.someHandler = this.someHandler.bind(this);
this.someHandler = this.someHandler.bind(this);
this.someHandler = this.someHandler.bind(this);
this.someHandler = this.someHandler.bind(this);
this.someHandler = this.someHandler.bind(this);
}
Run Code Online (Sandbox Code Playgroud)
如果我要为我的课程添加更多的方法,这将成为一个更大,更丑陋的混乱.
我的问题是,有没有办法解决这个问题,或者至少让它变得更容易,更短,更难看?我想尝试与ES6一起使用React的主要原因之一是让我的代码更简洁,但这恰恰相反.任何建议或意见将不胜感激.
在一个真实的简单案例中测试它们会产生相同的输出:
const obj = {a: 5, b: 5};
console.log(Reflect.ownKeys(obj));
console.log(Object.keys(obj));
// Result
['a', 'b']
['a', 'b']
Run Code Online (Sandbox Code Playgroud)
什么时候Reflect.ownKeys(obj)产生的输出不同Object.keys(obj)?
使用HTML5创建时使用开始标记的正确方法是什么
IE:HTML 4严格就是这样
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud) 我有两个javascript模块,如下所示:
// inner/mod.js
export function myFunc() {
// ...
}
// mod.js
import * as inner from "./inner/mod";
Run Code Online (Sandbox Code Playgroud)
我想出口myFunc的mod.js.我怎样才能做到这一点?
编辑:我应该澄清该功能正在按预期导出,inner/mod.js但我也想从外部导出功能mod.js.
对于那些要求澄清的人,我想实现这个目标:
// SomeOtherFile.js
import * as mod from "mod"; // NOT inner/mod
mod.myFunc();
Run Code Online (Sandbox Code Playgroud) 我在上一个项目中开始使用es2015和babel.当我尝试做import或export在if条件内时,我有一个错误'import' and 'export' may only appear at the top level.我看到了很多这样的情况require,但它与es2015模块配合使用效果不错.这种限制有什么理由吗?
在PHP构造函数和析构函数文档中,它说明了这一点
注意:如果子类定义构造函数,则不会隐式调用父构造函数.为了运行父构造函数,需要在子构造函数中调用parent :: __ construct().
但是,如果子类没有调用构造函数,那么父构造函数是否仍会被调用?或者我们应该创建一个调用父构造函数的构造函数吗?
IE:
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道以下是否符合ES6规范:
class X {
constructor(name) {
this._name = name;
}
get name() {
return this._name;
}
set name(name) {
this._name = name + "X";
}
}
class Y extends X {
constructor(name) {
super(name);
}
set name(name) {
super.name = name;
this._name += "Y";
}
}
Run Code Online (Sandbox Code Playgroud)
这个想法let y = new Y(""); y.name = "hi"应该y.name === "hiXY"是真实的.
据我所知,这在启用了ES6标志的Chrome中无效.它也不能使用Babel与es2015旗帜.是用super.name = ...在继承二传手不是ES6规范的一部分?或者这是Babel实施中的一个错误?
ecmascript-6 ×7
es2015 ×7
javascript ×6
babeljs ×2
class ×2
bower ×1
constructor ×1
cpu-cores ×1
doctype ×1
go ×1
html ×1
html5 ×1
js-amd ×1
node.js ×1
parent-child ×1
php ×1
reactjs ×1
system ×1