码迷,mamicode.com
首页 > 编程语言 > 详细

javascript模拟类及类继承

时间:2016-10-06 23:12:22      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:javascript   class   closure   prototype   

// 模拟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模拟类及类继承

标签:javascript   class   closure   prototype   

原文地址:http://doerthous.blog.51cto.com/11762533/1858936

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!