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

javascript中的封装、多态、和复制

时间:2015-07-13 17:55:45      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

1.封装

  在许多面向对象的语言中,对象封装有语法解析来实现的,这些语言或许提供了private,public,protected等关键字来控制访问权限。

  但javascript并没有提供这些关键字,只能通过闭包来改变变量的作用域来实现封装特性

		//私有变量 .使用闭包来实现私有变量
		var privateObj = (function(){
			var __private = ‘mico‘;
			return {
				getName: function(){
					return __private;
				}
			}
		})();

		alert(privateObj.__private);
		alert(privateObj.getName());

2.多态

  封装公共的方法,通过传入不同的对象实例来完成多态

		function makeSound( animal ){
			if( animal && typeof animal.duckSing == ‘function‘ ) {
				animal.duckSing();
			}
		}

		var duck = function(){};
		duck.prototype.duckSing = function(){
			console.log("duck Singing");
		};

		var chicken = function(){};
		chicken.prototype.duckSing = function(){
			console.log("duck Singing");
		};

		makeSound( new duck() );
		makeSound( new chicken() );

3、复制

使用对象的create方法实现复制

		function plan(){
			this.blood = 100;
			this.attackLevel = 1;
			this.denfenceLevel = 1;
		}

		var p = new plan();
		p.blood = 500;
		p.attackLevel = 8;
		p.denfenceLevel = 5;

		//var p2 = Object.create(p);
		//console.log(p2);		

		//实现克隆方法兼容
		Object.create = Object.create || function(obj){
			var F = function(){};
			F.prototype = obj;

			return new F();
		};

		var p2 = Object.create(p);
		//console.log(p2);

 

javascript中的封装、多态、和复制

标签:

原文地址:http://www.cnblogs.com/micotan/p/4643004.html

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