2010-08-14 51 views
0

我最近在考慮設計模式,並且我有一個我還沒有遇到過的問題(我確定它存在)的一個想法,所以我試圖做到這一點,並且讓我吃驚這比我想象的要容易。我認爲這很酷,所以我想與你分享。只是一些初學者的水平javascript我認爲很酷

//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); 

你認爲它有什麼實際用途?你如何看待其他物體相互作用的概念?

+0

如果您是通過功能的陣列循環,你怎麼會知道的功能多少參數需要? – 2010-08-14 04:16:49

回答

1

這是一個不好的模式。基本上你給方法一個非人類可讀的名字。你還不如寫你的函數是這樣的:

壞的做法例如:

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

它堅持人類可讀的命名空間於事無補。

但是,它可以是一個Command模式的第一代碼部分;)見objection.command