WEB开发网
开发学院网页设计JavaScript 理顺 JavaScript (15) - 类的继承手段: prototype... 阅读

理顺 JavaScript (15) - 类的继承手段: prototype

 2010-09-14 13:40:24 来源:WEB开发网   
核心提示:prototype(原型) 是 JavaScript 中类的继承手段;一个类也不过是一组属性和方法的集合, 所谓继承就是继承属性或方法;属性是个值, 方法是个函数, JavaScript 喜欢把它们都叫成属性, 我们喜欢把它们叫做成员;JavaScript 默认让每个函数都拥有一个 prototype 对象, 它可以指

prototype(原型) 是 JavaScript 中类的继承手段;

一个类也不过是一组属性和方法的集合, 所谓继承就是继承属性或方法;

属性是个值, 方法是个函数, JavaScript 喜欢把它们都叫成属性, 我们喜欢把它们叫做成员;

JavaScript 默认让每个函数都拥有一个 prototype 对象, 它可以指向一个对象或函数(函数也是对象, 一回事);

绕来绕去, 最终是四通八达...

类成员与对象成员

function Rect(w, h) {
 Rect.name = "My Rect"; //静态成员属于类, 不会被对象继承; 须冠类名调用
 this.width = w;    //this 是指实例化以后的对象或调用该函数的对象
 this.height = h;
 xyz = 123;      //这只能当个内部变量来使用
}

var r = new Rect();

//判断指定的成员名是否属于对象
alert("width" in r); //true
alert("height" in r); //true
alert("name" in r);  //false

//遍历对象成员
for (x in r) {
 alert(x);      //width / height
}

//遍历类成员
for (x in Rect) {
 alert(x);      //name
}

继承

function Point(x, y) {
 this.x = x;
 this.y = y;
};

function Rect(w, h) {
 Rect.name = "My Rect";
 this.width = w;
 this.height = h;
}
Rect.prototype = new Point(); //让 Rect 再从 Point 类继承

var r = new Rect();

//继承以后就可以这样使用
r.x = 1;
r.y = 2;
r.width = 3;
r.heigth = 4;

//遍历对象成员
for (x in r) {
 alert(x); //y / x / width / height
}

//遍历类成员
for (x in Rect) {
 alert(x); //name
}

//建立方法 constructor 属于 prototype, 既然 Rect 是继承与 Point, 那么:
alert(r.constructor); /* 将显示:
function Point(x, y) {
 this.x = x;
 this.y = y;
};
*/

1 2 3  下一页

Tags:理顺 JavaScript 继承

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接