Sta*_*ers 10 javascript sqlite html5 google-chrome
我使用sqlite DB作为webapp的存储系统.我一直在使用应用程序中直接从查询返回的对象.例如:
function get_book_by_id(id,successCallback,errorCallback)
{
function _successCallback(transaction, results)
{
if(results.rows.length==0) {successCallback(null);}
else
{
book=results.rows.item(0);
successCallback(book);
}
}
db.transaction(
function (transaction) {
transaction.executeSql("SELECT id,title,content,last_read from books where id=?;",[id], _successCallback, errorCallback);
});
}
Run Code Online (Sandbox Code Playgroud)
这将返回一个具有给定id的对象,所有列都作为属性提供.尼斯.我刚才想到的问题是结果集对象的所有属性都是不可变的.因此,例如,如果我想要更改属性'title'它没有任何效果,这在我看来毫无意义.例:
get_book_by_id(1,handle,error);
function handle(book)
{
//THIS DOESN'T WORK, book.title is still what it was.
book.title=book.title+"more text";
}
Run Code Online (Sandbox Code Playgroud)
我当然可以将我的所有数据库对象转换为可变对象,但我宁愿不这样做.
这是预期的行为吗?我可以请求可变对象吗?
我在Mac OS X上使用谷歌浏览器9.0.
小智 5
该的WebSQL规范并不要求对被密封在返回的项目,但它是由实现(规范确实需要该项目是一个有序的字典,在相同的顺序在查询中列的属性).
不,没有办法明确请求一个可变对象,所以你要做的事情就像convert_to_mutable()
Stan建议的方法.
顺便说一句,假设您正在使用第三方库,它可能具有此功能,例如jQuery.extend()或_.extend().
归档时间: |
|
查看次数: |
791 次 |
最近记录: |