Triptych'in işaret ettiği gibi, herhangi bir genel kapsam işlevini ana bilgisayar nesnesinin içeriğinde bularak çağırabilirsiniz.
Küresel ad alanını çok daha az kirleten daha temiz bir yöntem, işlevleri doğrudan şu şekilde bir diziye açıkça koymaktır:
var dyn_functions = [];
dyn_functions['populate_Colours'] = function (arg1, arg2) {
// function body
};
dyn_functions['populate_Shapes'] = function (arg1, arg2) {
// function body
};
// calling one of the functions
var result = dyn_functions['populate_Shapes'](1, 2);
// this works as well due to the similarity between arrays and objects
var result2 = dyn_functions.populate_Shapes(1, 2);
Bu dizi aynı zamanda genel ana makine nesnesi dışındaki bir nesnenin özelliği de olabilir, bu da jQuery gibi birçok JS kitaplığının yaptığı gibi kendi ad alanınızı etkili bir şekilde oluşturabileceğiniz anlamına gelir. Bu, aynı sayfaya birden fazla ayrı yardımcı program kitaplığı eklerseniz / dahil ettiğinizde çakışmaları azaltmak için yararlıdır ve (tasarımınızın diğer bölümleri izin verirse) kodu diğer sayfalarda yeniden kullanmayı kolaylaştırabilir.
Bunun gibi daha temiz bulabileceğiniz bir nesne de kullanabilirsiniz:
var dyn_functions = {};
dyn_functions.populate_Colours = function (arg1, arg2) {
// function body
};
dyn_functions['populate_Shapes'] = function (arg1, arg2) {
// function body
};
// calling one of the functions
var result = dyn_functions.populate_Shapes(1, 2);
// this works as well due to the similarity between arrays and objects
var result2 = dyn_functions['populate_Shapes'](1, 2);
Bir dizi veya bir nesneyle, işlevleri ayarlama veya bunlara erişme yöntemlerinden birini kullanabileceğinizi ve tabii ki diğer nesneleri de orada depolayabileceğinizi unutmayın. O kadar dinamik olmayan içerik için her iki yöntemin sözdizimini, JS değişmez gösterimini kullanarak daha da azaltabilirsiniz:
var dyn_functions = {
populate_Colours:function (arg1, arg2) {
// function body
};
, populate_Shapes:function (arg1, arg2) {
// function body
};
};
Düzenleme: Elbette daha büyük işlevsellik blokları için, yukarıdakileri, kod özelliklerini düzenli bir şekilde kapsüllemenin popüler bir yolu olan çok yaygın "modül modeline" genişletebilirsiniz.