Angular 在“中使用值”;“出口成本”;双重变量
它的“未定义”无法工作Angular 在“中使用值”;“出口成本”;双重变量,angular,typescript,Angular,Typescript,它的“未定义”无法工作 我怎样才能访问它?据我所知,你不能,至少你不想这样做。您不能使用this,因为您不在类中,因此它指向全局上下文(如果有,或未定义的),另一个唯一选项是使用foobar本身,如下所示: export const foobar = { foo: 'hello', bar: this.foo }; 但这也不起作用,因为在语句完成之前,foobar没有定义,因此会出现错误 恐怕唯一的办法是: const foobar = { foo: 'hello',
我怎样才能访问它?据我所知,你不能,至少你不想这样做。您不能使用
this
,因为您不在类中,因此它指向全局上下文(如果有,或未定义的
),另一个唯一选项是使用foobar
本身,如下所示:
export const foobar = {
foo: 'hello',
bar: this.foo
};
但这也不起作用,因为在语句完成之前,foobar
没有定义,因此会出现错误
恐怕唯一的办法是:
const foobar = {
foo: 'hello',
bar: foobar.foo
}
在导出的const
foobar
中,此
表示拥有该常量且为global\window的上下文
,因此得到的值为未定义
您必须创建一个由常量拥有的新范围,这可以通过创建函数
并分配给条
属性来实现。如下图所示:
const foobar = {
foo: 'hello',
bar: undefined
}
foobar.bar = foobar.foo;
现在,
此
将保持foobar
恒定上下文,您可以通过调用foobar.bar()
(应返回“hello”)访问propfoo
,正如其他答案已经提到的,此
使用不正确。它引用的上下文与定义的范围foobar
变量相同。当脚本在严格模式下运行时,它是未定义的
为了引用foo
属性,bar
可以定义为一对getter/setter函数:
export const foobar = {
foo: 'hello',
bar: function(){
return this.foo;
}
};
如果setter是不应修改的常量,则可以省略它
请注意,描述符在V8(Chrome、Node.js等)中会受到影响,在性能关键的地方,在对象原型上定义描述符是有益的,例如使用类
语法。也许这是可能的,但这似乎很奇怪。您的用例是什么?并且此
将指向窗口对象,因此条将未定义。因为没有窗口.foo
。
export const foobar = {
foo: 'hello',
get bar() {
return this.foo;
},
set bar(v) {
this.foo = v;
}
};