Цитата:
Object.prototype.test = 1;
alert(Object.test);
|
Цитата:
//IE9-11 Object.create bug fix
//http://webreflection.blogspot.ru/2014/04/all-ie-objects-are-broken.html
(function() {
var polyfill = {
isRequired: function() {
var object = Object.create({});
object[0] = null;
return !object.hasOwnProperty(0); //→ false in IE9-11
},
apply: 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;
};
}
};
if(polyfill.isRequired()) {
polyfill.apply();
}
}());
С английским мог ошибиться, но суть должна быть ясна :) |
Цитата:
Цитата:
Цитата:
|
nerv_,
Object.prototype[0] = 1; alert([][0]); |
Цитата:
Object.prototype[0] = 1;
alert([][0]);
alert(''[0]);
alert(0[0]);
Цитата:
Дело не в "красивей". Понятней (как мне кажется). А объект, как создаться, так и уничтожится, если он не нужен. Впрочем, это лишь мое мнение :) |
Цитата:
var foo = function () {};
new foo;
Что тут ненормального? |
Из вариантов создания локального контекста по условию
namespace.property || new function () {
…
};
//или
if (!namespace.property) {
(function () {
…
}());
}
//или
(function () {
if (!namespace.property) {
…
}
}());
//или
(function () {
if (!namespace.property) {
return false;
}
…
return true;
}());
я выбрал для себя первыйа это
(function () { /*test case*/ }()) || new function () {
…
};
уже уже вытекающеея бы конечно написал бы
new function () { /*test case*/ } || new function () {
…
};
но примитивное значение из конструктора вернуть нельзя, для него автоматически выполнится Object(value), которое будет всегда true |
Цитата:
alert(+new function () {
this.valueOf = function () {
return 1;
};
});
:) Цитата:
namespace.property || void function () {
...
}();
|
Кстати, что-то не понял, думал let уже есть во всех браузерах, но почему-то Aurora 30 ошибку выдает. Вроде в Firefox это первым появлялось.
Ждал, что догадаются сделать, чтобы работало так:
let label: {
//local scope
}
и чтобы метка была опциональной, а вся конструкция работала в выражении
window.Anything || let {
…
}
но мечты не сбываются. |
И не говори...
var array = []; for (let i = 0; i < 2; i++) array.push(() => i); array[0](); // 0 - Traceur, 2 - FF array[1](); // 1 - Traceur, 2 - FF Еще и скобочки лишние () писать нужно :( |
| Часовой пояс GMT +3, время: 07:10. |