Intereting Posts
Javax.net.ssl.SSLPeerUnverifiedException: нет сертификата peer, пока я работаю с google place api в android Java.net.UnknownHostException Невозможно разрешить хост «accounts.google.com»: нет адреса, связанного с именем хоста при вставке строк в bigquery Установить собственный шрифт для текста в PreferenceScreen Возможно ли сосредоточить макет / представление внутри CoordinatorLayout? Серийный номер устройства Samsung под управлением Android Форма заполнения PDF для Android Не удалось экспортировать приложение для Android (Eclipse) Как импортировать проект в репозиторий bitbucket из Android Studio? Как изменить андроид Как показать воздушный шар над маркером в MapActivity? Разве нет виджета? Компонент микросхем в библиотеке поддержки Android? Android RecyclerView: измените файл макета LIST на GRID onOptionItemSelected Класс не найден, когда Unmarshalling Android Intent Parcelable Android – узнать, какой час дня он Как добавить плавающий вид в Android Window Manager и прослушать события кнопки «Система / оборудование»

Создание объекта дважды приводит к разным результатам

У меня есть код javascript ниже. В Chrome, Firefox, Android-эмуляторе, Firefox на Samsung Galaxy S (Gingerbread 2.3.3) и Safari на iPod он отлично работает. В родном браузере на 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 

EDIT: Я нашел, почему он работает в эмуляторе. Эмулятор использует другой механизм javascript. Он использует АО вместо V8. В http://code.google.com/p/android/issues/detail?id=12987 есть фрагмент кода, который поможет вам определить, какой движок он использует. Эмулятор использует АО, Samsung Galaxy S использует V8.

Solutions Collecting From Web of "Создание объекта дважды приводит к разным результатам"

Из-за того, как V8 Engine делает сборку мусора и кеширование, я думаю, что это не делается с объектом, прежде чем он начнет возвращать результат. Вы пытались изменить свой код на следующее? Возвращает ли он ожидаемый результат каждый раз с этим кодом?

 var Padding = function(pleft, ptop, pright, pbottom) { this.top = (ptop != null) ? ptop : 20; this.left = (pleft!= null) ? pleft: 1; this.right = (pright!= null) ? pright: 0; this.bottom = (pbottom!= null) ? pbottom: 0; }; 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(); // ? testPadding(); // ? testPadding(); // ?