15 May 2014
号外号外:我的新书《现代JavaScript库开发:原理、技术与实战》出版啦!!!快点我查看
号外号外:一组小而美的JavaScript迷你库!!!快点我查看
号外号外:猿辅导招聘前端,后端,客户端啦!地点:北京!!!快点我查看

不解释,ES3时代的经典做法

(function() {
    // 私有静态成员
    var user = "";
    
    // 私有静态方法
    function privateStaticMethod(){
    }

    Box = function(value){
        // 私有成员
        var privateUser = value; 
        
        // 这个是私有方法
        function privateMethod(){
        }

        
        // 公有方法,因为能访问私有成员,也可以说是特权函数,也可以说是实例方法
        this.getUser = function(){
            return user;
        };
        
        // 公有成员
        this.user = 1;
    };
    
    // 公有共享方法
    Box.prototype.sharedMethod = function () {};
    
    // 公有共享属性
    Box.prototype.sharedProperty = 1;


    // 公有静态方法 
    Box.staticMethod = function(){};
    
    // 公有静态成员
    Box.staticProperty = 1; 
})();

时过境迁,下面来看看在ES6+中如何实现

(function() {
    // 私有静态成员
    var user = "";
    
    // 私有静态方法
    function privateStaticMethod(){
    }

    class Box {
        // 私有成员,等同于 constructor内部,提案写法,stage-3
        #privateUser = 1;

        // 公有成员,等同于 constructor内部,提案写法,stage-3
        user1 = 1;

        constructor() {
            // 私有成员
            var privateUser = value;

            // 这个是私有方法
            function privateMethod(){
            }


            // 公有方法,因为能访问私有成员,也可以说是特权函数,也可以说是实例方法
            this.getUser = function(){
                return user;
            };

            // 公有成员
            this.user2 = 1;
        }

        // 公有共享属性
        sharedProperty: 1

        // 公有共享方法
        sharedMethod() {}
        
        // 公有静态方法
        static staticMethod1() {}
        
        // 公有静态成员,提案写法,stage-3
        static staticProperty1 = 1;
    }
    
    // 公有静态方法,和上面写法等同
    Box.sharedMethod2 = function() {};
    // 公有静态成员,和上面写法等同
    Box.staticProperty2 = 1;
})();

总结

更多js面向对象相关内容请看:

原文网址:http://yanhaijing.com/javascript/2014/05/15/a-code-explain-javascript-oop/

微信公众号:颜海镜
关注微信公众号 颜海镜
微信支付二维码
赞赏支持 微信扫一扫


暂无评论,抢沙发!!!