ミニフレームワーク用に次のコードがあります。滞納している可能性のある開発者がコードを壊さないように、コードを「防弾」するにはどうすればよいですか?私はコメントでコードが何をするかを要約しました、そしてここに明確にするためのデモがあります
var kit = (function() {
'use strict';
//internal cache
var internal = {
core: {}
}
//external interface for extensions
//let's say we provide a hook for error handling from the core
var external = {
core: {
error: {
addListener: function(callback) {
callback();
}
}
}
}
//externally available options
var core = {
//build extension by creating an instance of the passed function
//providing it the core interface, and
//then store the instance in the cache
extend: function(extensionName, extensionDefinition) {
var newExtension = new extensionDefinition(external.core)
internal.core[extensionName] = newExtension;
}
};
//expose
return {
core: {
extend: core.extend
},
_internal: internal,
_external: external
}
}());
//let's say two developers built these extensions
//developer1 builds his code
kit.core.extend('extension1', function(core) {
core.error.addListener(function() {
alert('test');
})
//developer1 intentionally kills the whole error interface
core.error = null;
});
//now, the other scripts cannot use the error interface
//because some delinquent developer killed it
kit.core.extend('extension2', function(core) {
//core.error is no more!
core.error.addListener(function() {
alert('test');
})
});
すべての拡張機能が外部関数の分離された「コピー」を持ち、core
それに対して何をしても、他の拡張機能に影響を与えないようにするには、どうすればよいですか?
追加する可能性がある場合の副次的な質問:このコードを構造化するためのより良い方法/アプローチはありますか?