编辑:这是为什么我不能做c.Get.Css()我做的....它涉及深度复制。 http://jsfiddle.net/5YnhP/
我正在制作一些javascript原型:
var Control = {};
Control.Textbox = function(){};
Control.Textbox.prototype.Get = function(){};
Control.Textbox.prototype.Set = function(item){};
所以它说:
var c = new Control.Textbox();
c.Get();
我想稍微改进一些东西以组织方法,所以它做了类似的事情:
var Control = {};
Control.Textbox = function(){
this.Get = {};
this.Set = {};
this.Get.prototype.Css = function(){};
//...
};
或应该说:
var Control = {};
Control.Textbox = function(){
this.Get = {};
this.Set = {};
};
Control.Textbox.Get.prototype.Css = function(){};
然后在控制台中执行某些操作,例如:
var x = new Control.Textbox();
x.Get.Css();
x.Set.Css("herp","derp");
我将如何按照自己的意愿去做?我希望将有组织的不同调用分类为这样的分组。
我正在努力找到一个解决方案,但在最近几个小时里,我还没找到一个。
答案 0 :(得分:2)
你编写它的方式不起作用,因为普通对象没有prototype
属性,只有函数有。{1}}属性。所以不要这样:
var Control = {};
Control.Textbox = function(){
this.Get = {};
this.Set = {};
this.Get.prototype.Css = function(){};
//...
};
你可以写下这个:
var Control = {};
Control.Textbox = function(){
this.Get = {};
this.Set = {};
this.Get.Css = function(){};
//...
};
现在你可以做你原来想做的事了:
var x = new Control.Textbox();
x.Get.Css();
x.Set.Css("herp","derp");
<强> FIDDLE 强>
如果由于某种原因,您依赖于Css
原型中的Get
方法,则可以使用构造函数创建this.Get
:
var get = function(){}
get.prototype.Css = function(){};
this.Get = new get();
在较新的浏览器中,您还可以使用Object.create
创建具有指定原型的对象:
this.Get = Object.create({
Css : function(){};
});