kobezzza,
Кстати, ты говоришь, это не миксины, но че то сомнительно.
class CatDog extends pluralParent(Cat, Dog) {}
Я честно говоря, не понял до конца, но это выглядит так, как будто он смешивает все хрень в прототипе объекта CatDog. если это так, это тоже частный случай, и это не годится, ибо, он не сможет потом убрать из прототипа отдельно Cat или Dog, либо заменить чем либо. |
Цитата:
Цитата:
Цитата:
ЗЫ: ты малолетний бездарь с завышенным ЧСВ, на мнение которого абсолютно ВСЕМ насрать, у тебя нет ни проектов, ничего вообще, кроме своих фантазий и желчи, который ты тут всех поливаешь. |
Цитата:
При поиске свойства в объекте оно ищется в своём proto chain, если его там нет, то ищется в proto chain первого дополнительного родителя, если и там нет, то второго и т.д. Никаких миксинов, полная поддержка рантайм и нативно для JS. Цитата:
|
Цитата:
|
Цитата:
function pluralParent(...parents) {
Ставим свойство parents, как свойство созданного объекта, и потом просто добавляем/удаляем свойства из него и всё. Поиск свойств делает прокси, даже человеку, который вчера узнал JS будет всё очевидно. |
kobezzza,
Я щас попробую переписать все на обычном JS, потом запощу тут (если сегодня не успею, может завтра), а ты мне скажешь, правильно ли я переписал, потом будем дальше разговаривать. Пока ничего сказать не могу, голова не варит. |
А теперь твой ход, ты говорил, что рекурсия для мудаков и всё надо делать на циклах, поэтому давай запускаемой код функции, которая делает рекурсивный миксин объекта с произвольной глубиной и структурой произвольным количеством других объектов, короче аналог jQuery.extend или Collection.extend, но на одних циклах. Или ты заранее сливаешься?
|
kobezzza,
Я сначала с кодом разберусь, потом сделаю твою фигню. Во первых, я не уверен, что там все чисто, а во вторых, сомневаюсь, что это достаточно полная реализация. |
Цитата:
|
kobezzza, это че максимус?)
|
cyber,
не, это foo) Хотя я не уверен, что это не одно и тоже)) |
Цитата:
|
kobezzza, я то подумал что максимус опустился до уровня овоща)
|
tysonfury2015, для мотивации: если завтра ты не напишешь здесь ничего толкового -- уйдёшь в бан, чтобы время подучиться было :)
А то что-то ты скучный оказался :С |
Цитата:
Цитата:
Я написал полностью работоспособный код, полностью решающий твою задачу (в babel repl можешь проверить), на полностью валидном и современном JS. Если ты не можешь его понять, то это лично твои проблемы, иди кури мануалы. Вообще непонятно, как ты без знания языка собрался тут с нами спорить. Цитата:
Либо, как вариант, можно стащить из бабеля функцию установки наследования и использовать её в рантайме:
function changeParent(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: false,
writable: true,
configurable: true
}
});
if (superClass) {
subClass.__proto__ = superClass;
}
}
class CatDog extends pluralParent(Cat, Dog) {};
changeParent(catDog, Cat); //Теперь catDog - это просто кот.
changeParent(catDog, null); //А теперь - ничто.
changeParent(catDog, pluralParent(Cat, Dog)); //Возвращаем справедливость.
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Этот аккаунт даже не в первой двадцатке созданных, полагаю. |
Цитата:
на астрофоруме например модераторы очень быстро определяют тот же тролль вернулся на форум или новый пришёл. |
EmperioAf, тут принято сначала насладиться выступлением клоуна - а ну как новая программа. А уж потом можно и банить.)
|
Цитата:
|
Цитата:
|
а у Gozar бан когда закончится?
|
рони,
я его в банах не нашел. Он не забанен. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Я вот планирую улучшить раздел о GCC, ибо сейчас там устаревшая инфа уже. |
Цитата:
|
Цитата:
|
Цитата:
|
а виновника торжества уже забанили?
И где можно посмотреть список банов? |
Цитата:
|
Как-то Вы не тем заняты, вот затравка:
Cокращение больших идентичных кусков на странице(актуально для моего сервиса с кучей форумов и кучей идентичных страниц.
<!--Подгрузка с кешированним на клиенте редко меняемых секций HTML кода на странице -->
<script type="text/javascript">(function(){var a="FORUM:form#post",lnk="/files/content_form_post/1437607164.txt",
b='<!--|·|-->',html,c='/',reg=eval(c+b+c+'g'),b=b.split('|'),storag=window.localStorage; var d=+new Date();
if(storag)html=storag[a];if(html){c=html.substr(0,100).split(reg);if(c=(c[1]==lnk)){document.write(html);return;}}
if(!html||!c){c=c?'':'?'+d;html = $.ajax({url:lnk+c, async: false, cache:!c}).responseText; document.write(html);
if(!storag)return; storag[a]=b[0]+ lnk + b[1] + d + b[2]+html}}());
</script>
Нужный кусок кода страницы засовываем в файл /files/content_form_post/1437607164.txt , в даннном случае у меня форма ответа со всякими BB-наворотами, весом под 100кб. Скрипт ставим в то место страницы, где должен появиться контент. Получилась экономия трафика около 10% на страницу в топике с сообщениями и формой, коих основная масса /80% под юзером/, все скрипты и стили (если есть в виде загружаемых файлов) - разворачиваем в полный код, когда суём в файл подгрузки. var a="FORUM:form#post" - своё новое значение переменной для загрузки иной секции(отличной от текущей). |
kobezzza, чет я не пойму как подключить хтмл в js, через webpack, через что я не тупоб в доке)
|
Пытался что то такое сделать
module.exports = function ( app ) {
app.derictive ( "ngDynamicSelect", function ( ) {
return {
restrict: "A",
template: require( "../templates/list.html" ),
scope: {
ngDynamicLest: "="
}
}
} )
};
gulpfile
var gulp = require('gulp'),
webpack = require ( "webpack" );
gulp.task("webpack", function(callback) {
webpack({
entry: [ "src/directives/dynamic-select" ],
output: {
filename: "dist/ngDynamicSelect.js"
}
}, function(err, stats) {
console.log( err);
callback();
});
})
gulp.task('default', [ "webpack" ] );
|
Цитата:
Дока у веб-пака говно, но я настоятельно рекомендую потратить время на этот сборщик, ибо он действительно великолепен. |
Цитата:
|
kobezzza, спасибо)
nerv_, окай) |
Переписанный под синтаксис ES5 пример множественного наследования, специально для foo:
function inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}
Object.setPrototypeOf(subClass.prototype, superClass && superClass.prototype);
if (superClass) {
Object.setPrototypeOf(subClass, superClass);
}
}
function pluralParent() {
var parents = [].slice.call(arguments);
//Наследование конструктора
var DerivativeParent = function() {
var i;
var Parent;
for (i = 0; i < parents.length; i++) {
Parent = parents[i];
Object.assign(this, new Parent());
}
};
//Наследование свойств прототипа
DerivativeParent.prototype = new Proxy(DerivativeParent.prototype, {
get: function(target, name) {
if (name in target) {
return target[name];
}
var i;
var Parent;
for (i = 0; i < parents.length; i++) {
Parent = parents[i];
if (name in Parent.prototype) {
return Parent.prototype[name];
}
}
}
});
//Наследование статических свойств класса
DerivativeParent = new Proxy(DerivativeParent, {
get: function(target, name) {
if (name in target) {
return target[name];
}
var i;
var Parent;
for (i = 0; i < parents.length; i++) {
Parent = parents[i];
if (name in Parent) {
return Parent[name];
}
}
}
});
return DerivativeParent;
}
var Cat = function() {
this.isACat = true;
}
Cat.prototype.meow = function() {
console.log("meow");
}
var Dog = function() {
this.isADog = true;
}
Dog.prototype.bark = function() {
console.log("woof");
}
var CatDog = function() {
//Вызвать родительский конструктор. Можно не вызывать - тогда установленные в конструкторах свойства не унаследуются.
Object.getPrototypeOf(this.constructor).apply(this, arguments);
};
inherits(CatDog, pluralParent(Cat, Dog));
var catDog = new CatDog();
catDog.meow();
catDog.bark();
console.log(catDog);
Запускать надо в последнем FF (IceCat на дебиане): v8 еще не поддерживает вошедшие в релиз стандарта прокси ES6. |
| Часовой пояс GMT +3, время: 02:25. |