Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 12.04.2014, 11:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Дзен-трансгуманист
Баг интерфейса в FF28, замечен в винде:
я думал, это фича такая
Ответить с цитированием
  #52 (permalink)  
Старый 12.04.2014, 11:41
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Octane,
Твой вариант не будет работать если я сделаю так:
var o = Object.create({}, {});
o[0] = null;
o.hasOwnProperty(0); // false
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #53 (permalink)  
Старый 12.04.2014, 11:58
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote Посмотреть сообщение
Octane,
Твой вариант не будет работать если я сделаю так:
var o = Object.create({}, {});
o[0] = null;
o.hasOwnProperty(0); // false
сами проставляем configurable для всех свойств дескриптора?
Ответить с цитированием
  #54 (permalink)  
Старый 12.04.2014, 12:00
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

melky,
Зачем? Просто для ИЕ нужно проинициализировать объект
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #55 (permalink)  
Старый 12.04.2014, 12:51
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от devote
Твой вариант не будет работать если я сделаю так:
var o = Object.create({}, {});
o[0] = null;
o.hasOwnProperty(0); // false
да точно

defineProperties только enumerable свойства берет из объекта с дескрипторами

devote, твой вариант не работает, если сделать так:
var desc = Object.create({}, {"0": {}});

var obj = Object.create({}, desc);
obj[1] = 1;

console.log(obj.hasOwnProperty(1));
а если вместо getOwnPropertyNames будем использовать keys, можем случайно удалить non-enumerable свойство. Вряд ли конечно кто-то так будет делать, но хочется 100% вариант)

-----------
наверное лучше getOwnPropertyDescriptor использользовать

Последний раз редактировалось Octane, 12.04.2014 в 14:28.
Ответить с цитированием
  #56 (permalink)  
Старый 12.04.2014, 13:32
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

//IE9-11 Object.create bug fix
//http://webreflection.blogspot.ru/2014/04/all-ie-objects-are-broken.html
(function () {
	var object = Object.create({});
	object[0] = null;
	return object.hasOwnProperty(0); //→ false in IE9-11
}()) || new function () {
	var create = Object.create;
	Object.create = function (prototype, properties) {
		var object = create(prototype, properties);
		if (!Object.hasOwnProperty.call(object, 0)) {
			//numeric key fixes a bug,
			//it can be removed after,
			//unlike alphabetic key
			Object.defineProperty(object, 0, {
				configurable: true
			});
			delete object[0];
		}
		return object;
	};
};

Последний раз редактировалось Octane, 12.04.2014 в 16:48.
Ответить с цитированием
  #57 (permalink)  
Старый 12.04.2014, 18:54
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Octane,
Да отличное решение. Мои тесты все прошел.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #58 (permalink)  
Старый 12.04.2014, 19:06
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от devote
Да отличное решение.
Меня от этой записи передергивает
new function () {



А еще есть вопрос: это
alert(Object.hasOwnProperty)

в каком стандарте написано?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #59 (permalink)  
Старый 12.04.2014, 19:10
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от nerv_
каком стандарте написано?
любой объект имеет это свойство по наследству. Ведь конструктор Object тоже является объектом, потому и имеет это свойство. Хотя конечно не спорю, привычнее видеть:
Object.prototype.hasOwnProperty


Да и это тоже смущает:
var object = create(prototype, properties);
Как то все же лучше делать/видеть так:
var object = create.call(this, prototype, properties);
Потому как не сделав этого, мы лишаем прога передать иной контекст. Хотя конечно в данном случае он мало чем поможет.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 12.04.2014 в 19:12.
Ответить с цитированием
  #60 (permalink)  
Старый 12.04.2014, 19:11
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от nerv_
Меня от этой записи передергивает
new function () {
void function () {
   return {
       // ...
   };
}();

Считаешь, что эта лучшей?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт определения мобильных браузеров remkas Элементы интерфейса 0 25.10.2012 15:47
history браузеров d-kaktus Javascript под браузер 1 12.01.2012 00:31
Баги в форме добавления nemo Серверные языки и технологии 0 18.07.2010 13:35
Баги в сниппетах ответов Илья Кантор Сайт Javascript.ru 31 11.06.2009 17:58
feature request: FAQ hogart Сайт Javascript.ru 4 30.01.2009 11:53