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

Сообщение от Octane
Тогда и getOwnPropertyDescriptor, и propertyIsEnumerable фиксить придется, может еще что-нибудь
Ок, тогда не нужно никаких NOPов, все делается просто:
//IE9-11 Object.create bug fix
(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 isExecNum = properties && Object.getOwnPropertyNames(properties).indexOf("0") != -1;

        if (!isExecNum) {
            properties = properties || {};
            /**
             * Нужно добавить именно числовое свойство, иначе не будет работать
             * например такой вариант не работает:
             *   var o = Object.create({}, {"": {configurable: true}});
             *   delete o[""];
             *   o[0] = null;
             *   o.hasOwnProperty(0) // -> false
             * но если вместо пустой строки поставить число, то все работает хорошо
             */
            properties["0"] = {
                configurable: true
            };
        }

        var object = create.call(this, prototype, properties);

        if (!isExecNum) {
            delete object["0"];
            delete properties["0"];
        }
        return object;
    };
};
__________________
хм 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 в 04:19.
Ответить с цитированием