JavaScript 物件導向的編程(二) 類的封裝

來源:互聯網
上載者:User

標籤:getname   對象   play   返回   log   this   new   http   error   

類的定義

方式一

var Book = function(id, name, price){    //私人屬性,外部不能直接存取    var num = 1;    //私人方法,    function checkId(){};    this.getName = function(){};    this.getPrice = function(){};    this.setName = function(){};    this.setPrice = function(){};    this.id = id;    this.copy = function(){};    this.setName(name);    this.setPrice(price);}Book.isChinese = true;Book.resetTime = function(){    console.log(‘new time‘);}Book.prototype= {    isJSBook : false,    display : function(){}            }var b = new Book(11, ‘JavaScript 設計模式‘, 50);console.log(b.num);console.log(b.isJSBook);console.log(b.id);console.log(b.isChinese);

方式二

var Book = (function(){        var bookNum = 0;        function checkBook(name){    }    //返回建構函式    return function(newId,newName,newPrice){        //私人變數        var name,price;        //私人方法        function checkID(id){}        //特權方法        this.getName = function(){};        this.getPrice = function(){};        this.setName = function(){};        this.setPrice = function(){};        //共有屬性        this.id = newId;        //公有方法        this.copy = function(){};        bookNum++;        if(bookNum>100){            throw new Error(‘我們僅出版100本書‘);                }        this.setName(name);        this.setPrice(price);    }})();Book.prototype = {    //靜態公有屬性    isJSBook:false,    display:function(){}}

方式三

var Book = (function() {    //靜態私人變零    var bookNum = 0;    //靜態私人方法    function checkBook(name){}    //建立類    function _book(newId,newName,newPrice){        //私人變數        var name,price;        name = newName;        price = newPrice;        //私人方法        function checkID(id){}        //特權方法(建立的對象可以訪問)        this.getName = function(){return name;};        this.getPrice = function(){return price;};        this.setName = function(mingcheng){name = mingcheng;};        this.setPrice = function(){};        //公有屬性(對象可以訪問)        this.id = newId;        //公有方法(對象可以訪問)        this.copy = function(){};        bookNum++;        if(bookNum>100){            throw new Error(‘我們僅出版100本書‘);                }        //構造器        this.setName(name);        this.setPrice(price);    }    //構造原型    _book.prototype = {        //靜態公有屬性        isJSBook: false,        //靜態公有方法        display:function(){ return ‘hello world‘}        };        return _book;})();var book = new Book(10,‘javascript‘,100);console.log(book);console.log(book.isJSBook);console.log(book.getName());console.log(book.id);console.log(book.getPrice());book.setName(‘test01‘);console.log(book.getName());console.log(book.display());

測試環境node.js 版本8.10.0

 

有著作權問題請留言,或加我qq362601125

參考列表

1.《JavaScript設計模式》作者張榮銘

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.