我有以下JavaScript代码。在Chrome、Firefox、Android模拟器、Samsung Galaxy S上的Firefox和iPod上的Safari上均正常工作。但是,在Samsung Galaxy S原生浏览器上不起作用。
该代码创建一个对象并测试对象上的值。第一次创建对象时它是正确的,但第二次创建对象时它的值不正确。
这是否是JavaScript或V8或设备的错误?您将如何解决它?
var Padding = function(pleft, ptop, pright, pbottom) {
this.top = 20;
this.left = 1;
this.right = 0;
this.bottom = 0;
this.left = pleft;
this.top = ptop;
this.right = pright;
this.bottom = pbottom;
};
function testPadding() {
var p;
p = new Padding(91, 92, 93, 94);
alert(p.left.toString() + "," + p.top.toString() + "," + p.right.toString() + "," + p.bottom.toString());
}
testPadding(); // 91,92,93,94 - correct
testPadding(); // 1,20,93,0 - should be 91,92,93,94
testPadding(); // 1,20,93,0 - should be 91,92,93,94
编辑:我已经找到为什么它在模拟器中工作的原因了。 模拟器使用不同的JavaScript引擎,它使用JSC而不是V8。 在http://code.google.com/p/android/issues/detail?id=12987上有一小段代码片段,可以帮助你确定它使用的是哪种引擎。 模拟器使用JSC,三星Galaxy S使用V8。