javascript中的封裝、多態、和複製

來源:互聯網
上載者:User

標籤:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.