Javascript中使用Object还是Function构建工具包?
这是一个疑问,在我还没有清晰的明确的认识到问题的方向之前
(function(){
var myTools;
...
window.myTools=myTools;
})();
用匿名方法来封闭作用域以便避免自己的代码同其他代码的重名导致的混乱,应该已经算是有个相对清晰的认识
对于使用 window.myTools 的方式来减少对名称的占用也算同自己的习惯达成了共识
然而,对于以往工具的沿用还有共同代码的复用是使用prototype还是自己一个一个的复制,还有些不大清晰
// object 方式
function _baseChart(config){
var _chart={config:{name:"chart"}};
return _chart;
}
function _myChart(config){
var _chart=_baseChart({name:"myChart"});
jQuery.extend(_chart.config,config);
return _chart;
}
var chart=_myChart({name2:"TEST Chart"});
// class 方式
function _baseChart(config){
var _chart=this;
_chart.config={name:"chart",version:"0.1"};
jQuery.extend(_chart.config,config);
}
function _myChart(config){
var _chart=this;
jQuery.extend(_chart.config,config);
}
_myChart.prototype=new _baseChart({name:"myChart"});
var chart=new _myChart({name2:"TEST Chart"});
该选用哪种方式呢, 之前为了更少的变化使用的第一种方式,但直觉的认为这次优化应该改用第二种
Object 的方式 每个属性都是直接写到Object的上的
Class 的方式 每个属性是写到Class.prototype上的
Object 对当前实例的修改不会影响到其他实例
Class 对当前实例的修改不会影响到其他实例
Object 在创建实例后不能在没有实例引用的情况下对其进行修改
Class 在创建实例后可以在没有实例引用的情况下对其默认属性进行修改