Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
const (ES6). Уж лучше, хотя бы defineProperty (ES5, IE9+). А еще лучше дурью не маяться.Object::toString.call(it).slice 8, -1, а на пользовательские после сжатия кода и ваше решение работать не будет, тут разве что поможет свойство — подсказка (аналог Symbol.toStringTag).new Some()['[private test]'] доступно и снаружи. Лучше в сторону символов (Symbol) и их полифилов посмотрите, не совсем приватные свойства, но куда честнее ваших.минификация никак не повлияет
function SomeClass(){/* ... */} будет сжата до какой-нибудь function vE(){}, что и будет содержаться в toString. name тоже нестандартное свойство и не поддерживается IE. Совсем.не доступно, т.к. содержит невидимые чары
for-in и получаются через Object.keys.По поводу Symbol — есть ссылочка?
Object.getOwnPropertySymbols, символы не участвуют в обходе через for-in и недоступны через Object.keys. Доступны в V8 (с 38 Chrome — без флажка) и FF (с 33). Обещают в IE12. Полный полифил не возможен — нельзя добавить новый тип данных, но базовые возможности (уникальные неперечислимые ключи) легко реализовать генерацией уникальной строки и сеттерами в прототипе Object (эта часть решения сомнительна).class — не более чем синтаксический сахар, преобразующийся при компиляции в подобие Query.extend().window). Как пользователь CoffeeScript вы должны это знать, ведь единственный тамошний способ объявить «глобальную переменную» — это window.foo = 'bar'.require 'foo'), во втором — по относительному пути (require './foo'). Ни в том, ни в другом случае, вы не сможете создать два пакета, использующие одинаковое имя.$ = require 'jquery'
$ '.foo'
.bar()
application.js.coffee, и из этого файла вы можете использовать любые модули. Вам не нужно заботиться о порядке подключения файлов, потому что вам не нужно подключать файлы вручную. За вас это сделает Browserify.В-третьих, существуют две смежные проблемы, проистекающие из вышесказанного: коллизии имен и разрешение зависимостей. Ваш подход облегачет первую пролему, не устраняя ее, и никак не помогает со второй.
{Some} = Any.Ololo писать:Some = import Any:Ololo:Some Получается тоже самое, что и модули. Осталось только не пихать всё в window, а хранить внутри — будет копия.
Небольшие полезности для CoffeeScript разработчика