10
在构造函数和外部声明变量之间是否有区别?
对于函数,'this'的绑定方式不同,但对于变量,我无法弄清楚是否有区别。ES7类:在构造函数外声明属性
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"
**这是引用我的方案?** “有(故意)来定义或者原型的数据属性(比其他方法)类的属性,或实例属性没有直接声明的方式。” http://wiki.ecmascript.org/doku.php?id=strawman:maximally_minimal_classes –
我不确定您是否可以按照您要定义的方式在类定义中包含属性。 在此基础上:https://babeljs.io/docs/learn-es2015/#classes在'constructor'方法之外没有属性定义,以及如果您尝试您的ES6代码:https:// babeljs。 io/repl /你会发现ES6的编译器会在'constructor'方法之外产生一个属性defnitition的错误。 –
如果你喜欢在课堂外建造一些私人房屋,那么阅读这个问题也许很好:http://goo.gl/qzau3o有几个很好的答案。 –