私有成员和特权方法

模块模式:用于创建拥有私有数据的单件对象的模式

使用IIFE返回一个对象

var person = (function() {
    // 私有属性
    var age = 25;

    // 公有属性和方法
    return {
        name: 'u14e',
        getAge: function() {
            return age;
        }
        grow: function() {
            age++;
        }
    }
}());

暴露模块模式

var person = (function() {
    // 私有属性
    var age = 25;

    function getAge() {
        return age;
    }

    function grow() {
        age++;
    }
    
    return {
        name: 'u14e',
        getAge: getAge,
        grow: grow,
    }
}())

构造函数的私有成员

function Person(name) {
    // 私有属性
    var age = 25;

    this.name = name;
    this.getAge = function() {
        return age;
    }
    this.grow = function() {
        age++;
    }
}

模块模式和构造函数结合

var Person = (function() {
    // 私有属性
    var age = 25;

    function InnerPerson(name) {
        this.name = name;
    }

    InnerPerson.prototype.getAge = function() {
        return age;
    }

    InnerPerson.prototype.grow = function() {
        age++;
    }

    return InnerPerson;
}());

var person1 = new Person('u14e');
var person2 = new Person('u148');

console.log(person1.name);      // 'u14e'
console.log(person1.getAge());  // 25

console.log(person2.name);      // 'u148'
console.log(person2.getAge());  // 25

person1.grow();

console.log(person1.getAge());  // 26
console.log(person2.getAge());  // 26

Person的全部实例共享age变量,在一个实例上的改动会影响另一个

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    扶光启玄阅读 5,273评论 0赞 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,382评论 18赞 399
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 3,211评论 0赞 3
  • 从没好好认真推销过自己和文章。 我要开始了! 正峰欧巴是中过彩票的奇男子,我一下子能想到的人里头最幸运的。和努力无...
    凝了个大重阅读 265评论 0赞 0
  • 今天起来的时候,突然想到今年的冬天格外冷,往年好像没这样子。不知道是我的错觉,还是真的这样。 刚刚才发现昨天日记写...
    书山寻路蔡学士阅读 364评论 3赞 0

友情链接更多精彩内容