首页 > 代码库 > javascript模拟类及类继承
javascript模拟类及类继承
// 模拟Class function Rectangle(width, height){ this.height = height; // 实例变量(public) this.getWidth = function(){ return width; } // 实例变量(private) this.setWidth = function(w){ width = w; } Rectangle.INSTANCE_COUNT++; } Rectangle.prototype.getSize = function(){ return { width:this.getWidth(), height:this.height } } // 实例方法 Rectangle.INSTANCE_COUNT = 0; // 类变量 Rectangle.getInstanceCount = function(){ return Rectangle.INSTANCE_COUNT; } // 类方法 var s = new Rectangle(15,15); s.setWidth(50); console.log(s, s.getSize(), Rectangle.getInstanceCount(), Rectangle.INSTANCE_COUNT); // 继承 function PositionRectangle(width, height, x, y){ Rectangle.call(this, width, height); // 为this添加, width, height属性 this.x = x; this.y = y; this.getPosition = function(){ return { x: this.x, y: this.y } } } PositionRectangle.prototype = new Rectangle(); // 只继承方法 delete PositionRectangle.prototype.width; delete PositionRectangle.prototype.height; PositionRectangle.prototype.constructor = PositionRectangle; // 修正构造函数 s = new PositionRectangle(15,15,10,10); console.log(s, s.getSize(), s.getPosition(), Rectangle.getInstanceCount(), Rectangle.INSTANCE_COUNT);
本文出自 “Doerthous” 博客,请务必保留此出处http://doerthous.blog.51cto.com/11762533/1858936
javascript模拟类及类继承
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。