與您的代碼的問題是,你要使用一個構造函數不初始化您的實例。
const url = new Media({
url: 'url here',
});
在這裏,我們傳遞一個state object
與url
財產Media
構造函數,但你實際上並沒有捕捉對象初始化實例,因此該對象被簡單地忽略。因此,您的實例上沒有名稱url
的屬性,this.url
將爲undefined
。
如文件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;
}
});
然後,通過調用構造新的關鍵字和傳遞狀態的物體,像下面
const url = new Media({
'url' : 'myURL',
'type' : 'video'
});
url.getType(); // returns 'video'
url.getUrl(); // returns 'myURL'
你看到'返回this.url'在你的getURL()定義的任何問題? – Arkantos
是的,它是未定義的。 **這個**是一個空的對象。 –