不知道是不是这样:
<SCRIPT LANGUAGE="JavaScript">
<!--
function ParentClass(x){
this.son = new SonClass(x);
}
function SonClass(x){
this.x = x;
}var parentClass = new ParentClass(10);
alert(parentClass.son.x);
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ParentClass(x){
this.son = new SonClass(x);
}
function SonClass(x){
this.x = x;
}var parentClass = new ParentClass(10);
alert(parentClass.son.x);
//-->
</SCRIPT>
新增方法用prototype,属性就如楼上所说~
var A = function(){};
A.prototype={
id:"a",
getId:function(){
return this.id;
}
}
var B = function(){};
B.prototype=new A();
B.prototype.setId = function(id){
this.id=id;
}
var b = new B;
b.setId(23);
alert(b.getId());
</script>
//定义Circle类,拥有成员变量r,常量PI和计算面积的成员函数area()
///////////////////// 1 //////////////////////////////////////
function Circle(r) {
this.r = r;
}Circle.PI = 3.14159;
Circle.prototype.area = function() {
return Circle.PI * this.r * this.r;
}var c = new Circle(1.0);
alert(c.area());
////////////// 2 /////////////////
var Circle = function() {
var obj = new Object();
obj.PI = 3.14159;
obj.area = function( r ) {
return this.PI * r * r;
}
return obj;
}var c = new Circle();
alert( c.area( 1.0 ) );
//////////// 3 ///////////////////
var Circle = new Object();
Circle.PI = 3.14159;
Circle.Area = function( r ) {
return this.PI * r * r;
}alert( Circle.Area( 1.0 ) );
///////////// 4 /////////////////
var Circle={
"PI":3.14159,
"area":function(r){
return this.PI * r * r;
}
};
alert( Circle.area(1.0) );
//////////////// 5 //////////////////
var Circle = new Function("this.PI = 3.14159;this.area = function( r ) {return r*r*this.PI;}");
alert( (new Circle()).area(1.0) );
</script>
prototype继承的一个核心就是,每个函数都有一个与之关联的prototype对象,而用这个函数作为构造器创建的对象都继承这个prototype对象(一般所谓的Javascript中子类就是指该函数,而父类指该prototype对象的构造器)的属性。
function f1(){
this.i=1;
} //这个函数可以作为一个构造器,初始时它的prototype为一个空的object(即没有外在属性)
function f2(){
this.j=2;
}
f1.prototype=new f2() //将f1的prototype更改为f2的一个实例(注意不是f2,而是f2的一个实例)
var t1=new f1() //现在t1有了本身的i,同时还继承了j注意t1继承的是f2这个构造器创建的一个对象,因此它继承的是这个对象的属性和方法(这句话可能要慢慢理解)。