Stoyan Stefanov の JavaScript ネームスペース関数を実装しているのは、彼の非常に有益な JavaScript パターンの本を読んでいるためです。私のWebアプリケーションでは、適切な方法で使用しているかどうかわかりません
これは、このページのWebアプリで使用している関数の実装ですhttp://dalydd.com/projects/module_example/
var COOP = COOP || {};
COOP.namespace = function (ns_string) {
var parts = ns_string.split('.'),
parent = COOP,
i;
// strip redundant leading global
if (parts[0] === "COOP") {
parts = parts.slice(1);
}
for (i = 0; i < parts.length; i += 1) {
// create a property if it doesn't exist
if (typeof parent[parts[i]] === "undefined") {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
};
COOP.namespace('sliderContainer')
COOP.sliderContainer = function () {
return slider = ($('#slider').length > 0) ? $('#slider') : $('#element_temp');
} // we need this at the beginning as others are dependent on it and call it initially
私の目標は、COOP のすべての新しいプロパティをチェックして、実装する前に存在するかどうかを確認することです --- したがって、COOP.sliderContainer という名前の COOP のプロパティを作成する場合、COOP.sliderContainer がまだ存在しないことを確認したいと思います。名前空間関数を使用するとオブジェクトが返されますが、COOP.sliderContainer は関数です。この名前空間関数に適切に名前を付けるには、抽象化の追加レイヤーを作成する必要があるように感じます
var sliderContainer = COOP.namespace('sliderContainer');
sliderContainer.sliderContainer = function () {
return slider = ($('#slider').length > 0) ? $('#slider') : $('#element_temp');
}
これはばかげて冗長に思えます-これを行うより良い方法はありますか?
いつものようにどんな情報でも大歓迎です - ページにはjsファイルへの直接リンクがあります