javascript 对象之间的关系处理

是这样的,假设有两个对象,分别称为A,B吧,, 现在我的要求是:

  1. 对象A可以访问B的部分数据,但也只能是只读形式,

  2. B对象自身可对自己的数据可读可写。

我想问的是应该如何实现:


我问的问题本质上是:javascript中一个对象如何控制自己的数据对外开放的权限。

阅读 4.1k
6 个回答

写个访问控制方法不就解决了么?

常见的可以用IIFE做封装,export出来一些方法,get和set之类的。其实这种在我看来已经有点像Java了

EC5有有get和set方法,在创建对象的时候可以写好方法

新手上路,请多包涵

setter&getter

关于隐藏私有成员这个话题说简单有简单的解决办法,说复杂也有复杂的解决办法,各有优劣。

这是我以前写的一篇博客,
https://segmentfault.com/a/1190000003488631

前端时间发现另一个方法,还没考虑成熟,空了再写。不过基本思路都是“闭包”

function UserEntity() {
        var userName = null;

        var userProtoType = (function() {
            var inside = false;
            return {
                "userName": {
                    get: function() {
                        return userName;
                    },
                    set: function(value) {
                        //设置条件,如果是没有满足设置的条件,则不允许set
                        if (!inside) {
                            return false;
                        }
                        userName = value;
                    }
                },
                setUserName: {
                    value: function(value) {
                        inside = true;
                        this.userName = value;
                        inside = false;
                    },
                    writable: false, // 只读
                    configurable: false // 不可配置
                }
            }
        })();

        Object.defineProperties(this, userProtoType);
    }

    UserEntity.prototype.setUserName = function(value) {
        this.userName = value;
    }
    var arc = new UserEntity();
    arc.userName = '张三' //外部设置
    console.log(arc.userName);//输出:null
    arc.setUserName('李四');//内部设置
    console.log(arc.userName);//输出:李四
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题