我正在尝试扩展一个对象并向其添加一些自定义实例方法。如何访问属性中的数据?
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',
});
此处,您将带有 url
属性的 state 对象
传递给 Media
构造函数,但实际上并未捕获该对象来初始化您的实例,因此该对象被简单地忽略。因此,您的实例上不存在名为 url
的属性,并且 this.url
将为 未定义
。
据记录here ,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'
关于javascript - 访问实例方法内部的实例属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32942865/