为了防止一些函数之间同名的可能性,可以将属于一个模块的代码封装在一起。这样外部就无法调用一些私有函数了,就不会出现容易同名的情况出现。
方法一:
(function (exports) {
var obj = {};
exports.$class1 = obj;
obj.publicFunction = function () {}//外部可调用函数
function privateFunction() {}//私有函数
})(this);
调用的时候 $class1.publicFunction();
注:适合静态类,因为这种类似 类名.方法。这种方式无法存储数据。
方法二:object构造函数创建
var obj = {};
//或者 var obj = new Object();
obj.variableQuantity = "";
obj.functionLi = function () {}
调用的时候 obj.functionLi();
注:适合类的方法各不相同的情况。
方法三:字面量表示法
类似上面方法二
var obj = {
variableQuantity: "",
functionLi: function () {}
}
调用的时候 obj.functionLi();
注:适合类的方法各不相同的情况。
方法四:工厂模式创建(寄生构造函数模式)
function MyClass(variableQuantity) {
var o = new Object();
o.variableQuantity = variableQuantity;
o.baseFunction = function () {};
return o;
}
调用的时候 var obj = MyClass("");
注:适合结构相同,参数不同。
注意:由于这个情况不能依赖instanceof来判断对象类型,所以最好不使用。
方法五:构造函数创建(动态原型模式)
function MyClass(variableQuantity) {
/************公有内容区域************/
this.variableQuantity = variableQuantity;
this.baseFunction = function () {};
/************私有内容区域************/
function privateFunction() {};
}
调用的时候
var obj = new MyClass("");
obj.baseFunction();
注:适合结构相同,参数不同。
注:如果在类中使用this,则this的值为最后一个定义的值
方法六:原型创建
function MyClass(){}
MyClass.prototype.variableQuantity = 'Nike';
MyClass.prototype.baseFunction = function() {};
调用的时候
var obj = new MyClass();
obj.baseFunction();
注:适合大部分结构相同。
方法七:混合型(构造+原型)
function MyClass(variableQuantity){
this.variableQuantity = variableQuantity;
}
MyClass.prototype = {
baseFunction: function() {};
}
调用的时候
var obj = new MyClass("");
obj.baseFunction();
注:适合大部分结构相同。
啦啦啦,又学会了好几招。当然了,如果需要继承其他的类,也可以使用mixin多继承的方法哦,看看去吧。