javascript - 为什么在这个封装示例中私有(private)变量被赋值两次?

标签 javascript oop encapsulation

在此example of encapsulation ,为什么是name分配给私有(private)变量_name 9号线?这对我来说似乎是多余的,因为在第 2 行中,name已分配给 _name _name 没有任何变化或name ..

或者我读错了,是name私有(private)变量?

function Person(name) {
    var _name = name;
    return {
        name: function (name) {
            if(!name) {
                return _name;
            }

            _name = name;
        }
    };
}

最佳答案

两个名称。第一个是函数 Person 的参数,表示创建并初始化值_name。第二个是作为对象的 name 成员存储的匿名 function 的参数,它是传递给 getter/setter 的参数,用于更新私有(private)变量的值 (或获取当前值(如果未提供)。考虑:

var someone = new Person("alice");
someone.name("bob");
console.log(someone.name()); // output: bob

关于javascript - 为什么在这个封装示例中私有(private)变量被赋值两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23845199/

相关文章:

javascript - Easeljs - 触摸事件在平板电脑和 Android 中不起作用 - 但为什么

javascript - 两种方法使用appendChild,但结果不同

java - 为什么在最终的 Java 类中允许 protected 成员?

oop - 封装通用逻辑(领域驱动设计、最佳实践)

c# - 获取集合的添加/删除事件的通用类

c++ - 声明后添加好友类

javascript - 从表单中提交的部分文本创建超链接

javascript - NodeJS + MySql 请求

asp.net - 如何有效使用DTO对象(数据传输对象)?

java - 自实例化机制/概念在 Java 中如何工作?