Сообщение от danik.js
|
По поводу полифилов. Ты зачем перезаписываешь свойства:
Object.keys = Object.keys || function()..
|
Что изменится от того, что keys станет enumerable? Ну и вообще я методы побыстрому навыдергивал в пример
отсюда, там есть проверка.
Сообщение от nerv_
|
Сообщение от danik.js
|
Кстати, может кто пояснить, в каком стандарте писаны методы Array.slice и прочие?
|
предположу, что ни к каком. Это чтобы каждый раз из прототипа не брать, насколько я понимаю.
|
Array generic methods
В Aurora 29
Array.slice.toString()
"function slice() {
[native code]
}"
Сообщение от nerv_
|
Сообщение от danik.js
|
Это вобще дикость какая-то:
Object(object) !== object
|
я за isObject(value)
|
хз
Object(object) === object
стандартная проверка, сто лет так делаю, до этого никто не удивлялся
http://kangax.github.io/es5-compat-table/
http://kangax.github.io/es5-compat-table/es6/
http://kangax.github.io/es5-compat-table/non-standard/
http://people.mozilla.org/~jorendorf...ototype-object
не нахожу здесь Object.isObject или чего-то подобного, в глобале создавать такую функцию не хочу, а с неймспейсом запись не намного короче будет. Мне больше нравится запись
if (Object(arg).length)
, чем
if (isObject(arg) && arg.length)
.
Object.is не подходит, потому что
Object.is(null, null) → true
. Поэтому не вижу особой необходимости создавать isObject для полифила, в библиотеке или фреймворке — без проблем.
Сообщение от nerv_
|
Object(this).constructor !== Promise
// ->
isPromise(object)
|
Здесь не просто
this.constructor
, потому что в strict режиме this может быть undefined.
Да isPromise добавлю, думаю ни один раз понадобится, там надо разобраться, что происходит, когда в дженерики promise передают. Или на
this instanceof Promise
заменю.
Сообщение от nerv_
|
ну и по возможности я бы запихнул функции
function nextResolve(data) {
function nextReject(error) {
function resolve(data) {
function reject(error) {
в прототип как приватные (чтобы не создавались каждый раз)
|
попробую, просто сначала кроме onFulfilled, onRejected и lastData еще куча переменных замыкалась (всякие lastError, состояния rejected и fulfilled, и др.), сохранять их все куда то не хотелось
Сообщение от nerv_
|
Еще я вспомнил, что у тебя была тема про асинхронность. Так вот setImmediate там бы вписалась очень хорошо)
|
setImmediate есть в polyfills.js, используется в Promise и реализован почти так же, как в той
теме