Javascript 什么是';这';真的在JS框架中表示吗?
我对emberJS很陌生,我在官方指南中看到了很多“这”。 在ember对象模型中,我知道“this.”表示对象本身,如下所示:Javascript 什么是';这';真的在JS框架中表示吗?,javascript,ember.js,Javascript,Ember.js,我对emberJS很陌生,我在官方指南中看到了很多“这”。 在ember对象模型中,我知道“this.”表示对象本身,如下所示: var obj = Ember.Object.extend({ baz: { foo: 'BLAMMO', bar: 'BLAZORZ' }, something: Ember.computed('baz.{foo,bar}', function() { return this.get('baz.foo') + ' ' + th
var obj = Ember.Object.extend({
baz: {
foo: 'BLAMMO',
bar: 'BLAZORZ'
},
something: Ember.computed('baz.{foo,bar}', function() {
return this.get('baz.foo') + ' ' + this.get('baz.bar');
})
});
这意味着obj本身,但在其他情况下,如以下模型:
export default Ember.Route.extend({
model() {
this.store.push({
data: [{
id: 1,
type: 'album',
attributes: {
title: 'Fewer Moving Parts',
artist: 'David Bazan',
songCount: 10
},
relationships: {}
}, {
id: 2,
type: 'album',
attributes: {
title: 'Calgary b/w I Can\'t Make You Love Me/Nick Of Time',
artist: 'Bon Iver',
songCount: 2
},
relationships: {}
}]
});
}
});
“this”真正代表什么?
这完全取决于调用函数或创建对象的位置、内容和方式。this
的值是javascript本身的构造,而不是余烬。我强烈建议您阅读更多关于javascript的内容。这对于成为一名优秀的javascript开发人员非常重要
以下是一些帮助我的好资源:
至于您原始问题中的代码,Ember中的绝大多数对象都扩展了基本Ember对象,Route
也不例外。因此,在下面的代码块中,this
指的是定义了model()
函数的路由对象。Ember试图始终给出一个this,它几乎在所有情况下都是当前对象。在其操作中,它也适用于普通对象,对于计算属性、观察者等也是如此
我认为唯一完全不同的是路由器DSL
因此,在两个示例中,这个
都是当前对象。在第二种情况下,您只能调用this.store
,因为存储被注入到路由中。就像xcskier提到的那样,这取决于您所处的上下文。你为什么不自己检查一下你的“这个”呢
console.log(this);
尽管您可能应该提到,动作中的this
指的是包含动作
散列的对象,而不是默认JS行为通常预期的动作
散列本身。您的想法是正确的,我读过很多文章,最后我发现javascript中的“this”与java有很大的不同。“this”作为函数的参数传递,因此它取决于自身的上下文。