您现在的位置是:首页 > 电脑技术查询 > web开发

js 的类中类 设计方式是否有有关问题

编辑:chaxungu时间:2022-10-02 23:16:53分类:web开发

js 的类中类 设计方式是否有问题?
js 的类中类的设计方式是否有问题?
为什么不见大家这样写js ?
有什么优点与缺点?

方法一:
JScript codevar parentClass = function(){ //类中的属性: this.value="parent"; //类中类: this.sonClass = function(){ this.value = "son"; };};var parent = new parentClass();var son = new parent.sonClass();alert(son.value);alert(parent.value);//结果: son 后 parent
方法二:
JScript code///========================================var parentClass = function(){ //类中的属性: this.value="parent"; //类中类: this.sonClass = function(){ this.value = "son"; }; this.sonObj; //构造func (function(){ this.sonObj=new this.sonClass(); }).apply(this,arguments);};var parent = new parentClass();alert(parent.sonObj.value);alert(parent.value);//结果: son 后 parent

------解决方案--------------------
第一种,可读性上就差,this.sonClass这种方式很容易被误认为是一个方法。还有就是sonClass如果外面用不到,也不用暴露出来了,直接和parentClass内部即可。
JScript codevar parentClass = function(){ //类中的属性: this.value="parent"; //类中类: var sonClass = function(){ this.value = "son"; };};var parent = new parentClass();
------解决方案--------------------
搞不清楚你这么设计的目标是什么,sonClass继承parentClass?
------解决方案--------------------
无所谓什么类中类,js中的函数(方法)都可以当作构造函数使用,就比如随便写个
function test(){}
var a=new test();//一样可以产生一个对象,只是没有属性而已;
a.test=test;
var b=new a.test();//方法也可以当作构造函数使用,当然也没有属性

像你上面那个所谓类中类,当作方法调用一样是可以的
var parent = new parentClass();
parent.sonClass();//方法里面的this指代方法拥有者,所以这个方法在这里给parent对象添加了一个value属性
alert(parent.value);
------解决方案--------------------
用namespace啊
JScript codevar ns1 = ns1 || {};ns1.foo = function(){};var ns2 = ns2 || {};ns2.foo = function(){};
------解决方案--------------------
JScript codevar parentClass={ //类中的属性: value:"parent", //类中类: sonClass:{ value:"son" }};alert(parentClass.value);alert(parentClass.sonClass.value);