Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是';这';真的在JS框架中表示吗?_Javascript_Ember.js - Fatal编程技术网

Javascript 什么是';这';真的在JS框架中表示吗?

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

我对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') + ' ' + 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”作为函数的参数传递,因此它取决于自身的上下文。