【发布时间】:2016-04-25 23:54:24
【问题描述】:
在构造函数内部和外部声明变量有什么区别吗?
对于函数,'this' 的绑定方式不同,但对于变量,我不知道是否有区别。
class Widget {
constructor(constructorName) {
this.constructorName = constructorName;
}
nonConstructorName = "nonConstructorName1";
}
var myWidget = new Widget("myConstructorName1");
console.log(myWidget.constructorName); // "myConstructorName1"
console.log(myWidget.nonConstructorName); // "nonConstructorName1"
myWidget.constructorName = "myConstructorName2";
myWidget.nonConstructorName = "nonConstructorName2";
console.log(myWidget.constructorName); // "myConstructorName2"
console.log(myWidget.nonConstructorName); // "nonConstructorName2"
console.log(myWidget.prototype.constructorName); // "undefined"
console.log(myWidget.prototype.nonConstructorName); // "undefined"
console.log(myWidget.__proto__.constructorName); // "undefined"
console.log(myWidget.__proto__.nonConstructorName); // "undefined"
var myNewWidget = new Widget("myConstructorName3");
console.log(myNewWidget.nonConstructorName); // "nonConstructorName1"
【问题讨论】:
-
这是在引用我的场景吗?“没有(有意)直接的声明方式来定义原型数据属性(方法除外)类属性或实例属性。” wiki.ecmascript.org/…
-
我不确定您是否可以按照您要定义的方式在类定义中包含属性。基于此:babeljs.io/docs/learn-es2015/#classes
constructor方法之外没有属性定义,如果您在此处尝试 ES6 代码:babeljs.io/repl 您将看到 ES6 转译器在@987654327 之外为属性定义产生错误@方法。 -
如果你想在类构造之外拥有一些私有属性,也许可以阅读这个问题:goo.gl/qzau3o,它有几个很好的答案。
-
@merianos-nikos:我正在使用 Babel 6 进行编译,有趣的是,它不会引发错误。
-
@merianos-nikos:Babel REPL 还没有升级到 Babel 6。
标签: javascript ecmascript-2016