標籤:
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中的封裝、多態、和複製