Показать сообщение отдельно
  #132 (permalink)  
Старый 20.01.2015, 21:41
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

В ES7 планируется добавить специальный способ обращения к символьным свойствам объекта через ::, например,

foo::some()


Как по мне, то данная фича очень нужна и я считаю, что все встроенные свойства и методы Object.prototype должны быть продекларированы именно так, например,

for (let key in foo) {
    if (foo::getOwnPropertyDescriptor(key)) {
        ...
    }
}


Это уберёт потенциальные ошибки при использовании объекта, как таблицы.

function foo(params) {
    if (params.toString) {
        alert('ffffuuuuu');
    }
}

foo({});


А вот если бы базовый метод toString был бы символьный и доступен через :: то такой бы ошибки не было, а проблемы совместимости старого кода можно решить флагом:

'use es7-strict';


По аналогии с useAsm и useStrict.

К слову, символьные свойства были введены как раз, чтобы можно было безопасно расширять прототипы объектов, в частности и Object.prototype.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 20.01.2015 в 21:43.
Ответить с цитированием