理顺 JavaScript (15) - 类的继承手段: prototype
2010-09-14 13:40:24 来源:WEB开发网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 继承
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接