在实例方法中获取对实例属性的访问权



我正在尝试扩展对象并添加一些自定义实例方法给它。如何访问属性中的数据?

const Media = Parse.Object.extend('Media', {
  getUrl: function getUrl() {
    // HOW DO I ACCESS ATTRIBUTES HERE?
  },
});
const url = new Media({
  url: 'url here',
}).getUrl()

我基本上期望属性值存在于this或this.get('url')

那么我如何获得访问属性内的实例方法?

谢谢

你的代码的问题是,你试图使用一个构造函数不初始化你的实例。

const url = new Media({
  url: 'url here',
});

这里你传递一个state objecturl属性到Media构造函数,但你实际上并没有捕获该对象来初始化你的实例,所以对象被简单地忽略。因此,在您的实例中没有名为url的属性,并且this.url将是undefined

如本文所述,对于给定的类名,Parse.Object.extend()将返回Parse.Object的子类。extend()的第二个参数是一个对象,包含所有实例可用的实例属性/方法。定义了类之后,可以使用new关键字创建一个新实例。如果在创建实例时有几个参数需要初始化,可以像下面这样使用initialize方法。

const Media = Parse.Object.extend('Media', {
  initialize : function(state){
     this.url = state.url;
     this.type = state.type;
  },
  getUrl: function getUrl() {
    return this.url;
  },
  getType : function(){
    return this.type;
  }
});

然后通过调用构造函数new关键字并传递如下所示的状态对象来创建一个实例

const url = new Media({
  'url' : 'myURL',
  'type' : 'video'
});
url.getType(); // returns 'video'
url.getUrl(); // returns 'myURL'

原来,我试图在一个嵌套的对象上执行getUrl()方法,但是我没有在查询中包含这个对象。