просто какой-то яваскрипт начального уровня, я думал, что это круто - PullRequest
0 голосов
/ 14 августа 2010

В последнее время я думал о шаблонах проектирования, и у меня появилась идея о том, с чем я еще не сталкивался (я уверен, что он существует), поэтому я попытался создать его, и, к моему удивлению, это оказалось проще, чем я думал. Я думал, что это круто, поэтому я хотел бы поделиться этим с вами.

//pass this object a function, and it adds its 
//biological and technological distinctiveness to itself
var snowman = {
    snowballs: [],
    addsnow: function(snow) {
        this.snowballs.push(snow);
        },
    getsnow: function(index) {
        con(this.snowballs[index]);
    }
}

function squareArea(x, y) {
    return x * y;
}

function circleArea(r) {
    return Math.PI * 2 * r;
}

snowman.addsnow(squareArea);
snowman.addsnow(circleArea);

console.log( snowman.snowballs[0](5,3) );//15
console.log( snowman.snowballs[1](3) );//18 or so
snowman.getsnow(0);

Как вы думаете, какое практическое применение это может иметь? Что вы думаете об идее предметов, каннибализирующих другие объекты?

1 Ответ

1 голос
/ 14 августа 2010

Это плохая картина. По сути, вы даете методам нечитаемое имя. С таким же успехом вы можете написать свои функции так:

Пример плохой практики:

function x1(A,B){
   // DO SOMETHING
}
function x2(A){
   // DO SOMETHING ELSE
}

Прикрепление его к удобочитаемому пространству имен не помогает.

Однако это может быть первая часть кода шаблона Command ;) См. objection.command

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...