读过一篇文章里面js面向对象的写法通过
function New(aClass, aParams) //通用创建函数 { function new_() //定义临时的中转函数壳 { aClass.Create.apply(this, aParams); //调用原型中定义的的构造函数,中转构造逻辑及构造参数 }; new_.prototype = aClass; //准备中转原型对象 return new new_(); //返回建立最终建立的对象 };
起到了构造函数的作用,但是直接用NEW()创建对象,感觉不像类,而且这样写的类的方法在编辑器时,不会自动提示,模仿下有了方法二。
方法二:
var Class = { create: function () { return function () { this.initialize.apply(this, arguments); } } }//模仿形成构造器函数的的效果 var click_class = Class.create()//建立click_class类 click_class.prototype = { initialize: function (name,obj) { this.name=name this.obj = $(obj) },//定义构造器函数 pri: function () { alert(this.name+":"+this.obj.html()) }//定义公共方法 } var t = new click_class("sonny","p") $(".div").click(function () { t.obj=$(this)//js的特性覆盖对象类的属性 t.pri() })
demo: