我知道所有新的ECMAScript6东西,我们正在发生一些令人惊奇的事情。我的目标是做这样的事情,我不知道它是否可能:
var angEl = {
get(): blah,
scope: this.scope(),
injector: this.injector()
}
现在我这样做:
var angEl = blah;
var angElProps = {
scope: angEl.scope(),
injector: angEl.injector()
}
只是想知道是否有任何很酷的新方式来实现这一目标。
答案 0 :(得分:1)
我正在读两件事,你想要分配价值和方法。
在ES5中执行此操作的最佳方法是将此值放在构造函数中,该函数将在运行新的MyObject(值)时运行。然后将方法分配给原型。如果将方法放在构造函数中,则可能会导致同一函数一次又一次地创建出现问题。
ES5
var MyObject = function(value){
this.value = value;
}
MyObject.prototype.func = function(){};
如果您不打算利用手动编辑对象原型并只想要类似类的对象,ES6的语法更清晰。
ES6
class MyObject{
constructor(value){
this.value = value;
}
func(){}
}
编辑:此外,ES6已内置并设置。
class MyObject{
func(){}
set value(value){
this._value = value;
}
get value(){
return this._value;
}
}
答案 1 :(得分:0)
不完全是es6,但听起来你想使用像Object.defineProperty()或Object.defineProperties()这样的东西。 例如:
var angEl = {};
Object.defineProperties(angEl, {
'scope': {
get: function() {
return this.scope;
},
set: function(val) {
this.scope = val;
},
value: //set to something
},
'injector': {
...
}
});
通过这种方式,您可以精确定义如何与对象进行内部交互,而无需额外的对象。