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

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

 2010-09-14 13:40:24 来源:WEB开发网   
核心提示: hasOwnProperty、propertyIsEnumerable、isPrototypeOffunctionPoint(x,y){this.x=x;this.y=y;};functionRect(w,h){Rect.name="MyRect";this.width

hasOwnProperty、propertyIsEnumerable、isPrototypeOf

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();

var r = new Rect();

/* 可用 hasOwnProperty 方法判断指定成员是否是对象的固有成员(而非继承来的) */
alert(r.hasOwnProperty('x'));   //false
alert(r.hasOwnProperty('y'));   //false
alert(r.hasOwnProperty('width')); //true
alert(r.hasOwnProperty('height')); //true

/* 但不能用 hasOwnProperty 判断成员是否是继承来的, 譬如 */
alert(r.hasOwnProperty('ABCDEFG')); //false

/* propertyIsEnumerable 方法的结果总是和 hasOwnProperty 一样? */
alert(r.propertyIsEnumerable('x'));   //false
alert(r.propertyIsEnumerable('y'));   //false
alert(r.propertyIsEnumerable('width')); //true
alert(r.propertyIsEnumerable('height')); //true

/* isPrototypeOf: 是不是参数(参数是个对象)的原型对象 */
alert(Point.prototype.isPrototypeOf(r));  //true
alert(Rect.prototype.isPrototypeOf(r));   //true
alert(r.isPrototypeOf(r));         //true

var obj = {};
alert(Object.prototype.isPrototypeOf(obj)); //true
var str = new String();
alert(String.prototype.isPrototypeOf(str)); //true
alert(Object.prototype.isPrototypeOf(str)); //true

Tags:理顺 JavaScript 继承

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