WebSQL:SQLResultSetRowList 中的返回行是不可变的
WebSQL: Are returned rows in SQLResultSetRowList immutable?
我一直在从 WebSQL 数据库中获取行,返回的行似乎是只读的。
db.readTransaction(
function(t1) {
t1.executeSql(
"SELECT * FROM Foo WHERE id = ?",
[1],
function(t2, resultSet){
var foo = resultSet.rows.item(0);
console.log("before: " + foo.col1);
foo.col1 = "new value";
console.log("after: " + foo.col1);
console.log("sealed? " + Object.isSealed(foo));
console.log("frozen? " + Object.isFrozen(foo));
}
);
}
);
它打印:
before: old value
after: old value
sealed? false
frozen? false
我必须手动克隆该行才能对其进行修改。
这怎么可能?如何在不被冻结或密封的情况下使物体变得不可变?规格中哪里说它应该是这样的?
更新:这很有趣。它只发生在某些表中。仍然对此一无所知。
更新2:不,它发生在我阅读的每个表中。似乎与Chrome有关(在Opera中也发生,因此可能是webkit行为)。
根据Web SQL规范SQLResultSet
接口中的SQLResultSetRowList
是只读的。
相关文章:
- 如何将不可变的js导入angular 2(alpha)
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- Google 加号登录不会返回id_token
- Ajax正确发布表单,但不会返回成功数据
- JavaScript Array unshift() 以一种不可变的方式
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 将对象从另一个不可变的Map分配给Map是否意味着深度克隆
- 函数在不可变的js和redux存储中
- 如何在JS中创建对象的可变和不可变副本
- 使用this和onclick()时不能返回id值
- 使用动态键返回不可变状态
- 不可变的JS映射或列表
- 悬停在动画文本上后,文本淡入淡出不会返回
- 我的函数不会返回要保存在数组中的对象
- 比较数组中的连续元素不会返回任何结果(javascript)
- 不可变,在映射内更新不返回正确的对象
- WebSQL:SQLResultSetRowList 中的返回行是不可变的
- getBoundingClientRect的返回值如何不可变
- 使用不可变的js将reducer状态设置为返回的数组
- 不可变setIn嵌套对象返回无效的keyPath错误