我正在尝试扩展对象并添加一些自定义实例方法给它。如何访问属性中的数据?
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 object
与url
属性到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()
方法,但是我没有在查询中包含这个对象。