var Class = {
create: function() {
return function() { this.init.apply(this, arguments); };
}
};
var Drag = Class.create();
为什么这么创建对象?求高手释疑
this.init.apply(this, arguments);
的含义是调用 this对象的init函数,将外层函数的参数传递给init函数。
例如:
var Class = {
create: function() {
return function() { this.init.apply(this, arguments); };
}
};
var a = {
drag: Class.create(),
init: function(aa){
console.log(aa);
}
};
a.drag(123);
至于你给出的代码中的var Drag = Class.create();
可能要结合你的上下文代码来看具体的作用。单就这一段代码来看是没什么用的。
看Class.create();的返回内容,要赋值给一个具有init函数的对象上才有用。
看个人喜好,进行了一次封装,减少了代码量
js是面向过程的语言
把这种思想变换成面向对象的思想
如果你是java或学过面向对象语言的 就这样理解
Class 是类名 里面的是静态方法
至于为什么要这样呢? 因为js 只要在一个页面所有的js函数都是在一个栈里面 为了避免冲突 更确切的说相当于一个命名空间 避免冲突
对应的面向对象思想还有一种写法
var Class = function(_name){
this.name = _name;
this.alertName = function(){
alert(this.name);
}
}
var class = new Class("我");
class.alertName();