首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

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

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

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

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

方法一:
JScript code
var 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 code
var 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 code
var ns1 = ns1 || {};ns1.foo = function(){};var ns2 = ns2 || {};ns2.foo = function(){};
[解决办法]
JScript code
var parentClass={    //类中的属性:    value:"parent",    //类中类:    sonClass:{        value:"son"    }};alert(parentClass.value);alert(parentClass.sonClass.value); 

热点排行