方法一:
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
方法二:
///========================================
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
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
方法二:
///========================================
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.value="parent";
//类中类:
var sonClass = function(){
this.value = "son";
};
};
var parent = new parentClass();
第二种,基本类似,只是能够获取到parentClass的初始化参数,但是从例子中看不出来parent与son有什么必然的联系...
是包含设计法!就如!
js 所有对象都 从window起一样
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);
目的是管理一些类,如果不用这样搞,
全部都是
var classXX = function(){};这样的话,
那么, 我们声明的类,全部都会 被window 对象包含,
那么,开发员之问的共同作业,可能有对象冲突, 当然,还有类管理,不同的类放在不同的地方,
比如,
我们用到一些数组,两维的,树形数据,等等数据类型 放到一个类中,
一些界面移动,展示的,放到一个类中
一些,与服务器通讯的,放到一个类中,
以便
copy 就可以用,不会冲突。
ns1.foo = function(){};
var ns2 = ns2 || {};
ns2.foo = function(){};
//类中的属性:
value:"parent",
//类中类:
sonClass:{
value:"son"
}
};
alert(parentClass.value);
alert(parentClass.sonClass.value);