我有一个功能:
function createOrLoadDB (host) {
var db = JSON.parse( window.localStorage.getItem(host) )
if ( db == null ) {
db = new InitDB(host)
}
else {
db.__proto__ = InitDB.prototype
}
return db
}
这对我来说似乎会起作用,但当我打电话给db.flushDB()
时,我得到了
TypeError: Object #<an InitDB> has no method 'flushDB'
这很有趣,因为我的对象def中有这个:
function InitDB ( host ) {
... stuff
this.flushDB = function () {
window.localStorage.setItem( this.host, JSON.stringify( this ) )
}
... stuff
}
我,我错过了什么。 __proto__
让它说#<an InitDB>
,但它仍然没有采用方法......
答案 0 :(得分:1)
将您的flushDB
方法添加到InitDB.protoype
。否则,该方法将仅出现在InitDB
显式创建的对象中。
像
这样的东西function InitDB(host) {
// the init stuff here, minus this.flushDB
}
InitDB.prototype.flushDB = function() {
window.localStorage.setItem(this.host, JSON.stringify(this));
};