数据库
首页 > 数据库> > javascript – WebSQL:SQLResultSetRowList中返回的行是不可变的吗?

javascript – WebSQL:SQLResultSetRowList中返回的行是不可变的吗?

作者:互联网

我一直在从WebSQL DB中获取行,并且返回的行似乎是只读的.

    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

我必须手动克隆该行才能修改它.

这怎么可能?如何在不冻结或密封的情况下使物体变得不可变?
the specs在哪里说它应该是那样的?

更新:这很有趣.它只发生在一些表中.仍然无能为力.

更新2:不,它发生在我读的每个表中.似乎是与Chrome相关的东西(也发生在Opera中,因此它可能是一个webkit行为).

解决方法:

根据SQLResultSet中的Web SQL Spec SQLResultSetRowList接口是readonly.

标签:javascript,html5,row,immutability,web-sql
来源: https://codeday.me/bug/20190629/1324455.html