• 私有变量和特权方法


    1.定义

    私有变量:js的作用域属于函数作用域 ,外部变量不能访问函数内部定义的变量  ,此变量为私有变量

    特权方法:有权访问内部私有变量和方法的公有方法

    2.定义对象的方式

    一是使用Object实例化或者对象表达式 

    var TaoBao = (function() {

    // 私有属性 var _total = 10;

    // 私有方法var _buyFood = function() { _total--; };

    var _getTotal = function() { return _total; }

    return { name: 'taobao', getTotal: _getTotal,

    //使用了闭包的方式来间接使用内部私有变量

    buy: _buyFood } }) ();

    TaoBao.buy(); console.log(TaoBao.name); // 'taobao'

    console.log(TaoBao.getTotal()); // 9

    二是使用构造函数。

    function TaoBao(name) {

    // 私有属性 var _total = 10;

    // 公有属性 this.name = name;

    // 私有方法 function _buyFood() { _total--; }

    // 特权方法,才能访问私有的属性和私有的方法 this.buy = function() { _buyFood(); }

    this.getTotal = function() { return _total; } }

    // 公有方法, 注意这里不能访问私有成员_total TaoBao.prototype.getName = function() { //console.log(_total); // Uncaught ReferenceError: _total is not defined return this.name; } var taobao = new TaoBao('taobao'); console.log(taobao.getName()); // 'taobao' taobao.buy(); console.log(taobao.getTotal()); // 9

    三合二为一

     var TaoBao = (function() {

    // 私有属性 var _total = 10; // 私有方法

    function _buyFood() { _total--; } // 构造函数

    function TaoBao(name) {

    this.name = name;

    this.getTotal = function() { return _total; } }

    //这里怎么可以访问私有的方法??这里不是TaoBao内部的私有哦!

    TaoBao.prototype.buy = function() {

    console.log(_total); // 10

    _buyFood(); }

    TaoBao.prototype.getName = function() { return this.name; }

    return TaoBao; }) ();

    var taobao = new TaoBao('taobao');

    console.log(taobao.getName()); // 'taobao'

    taobao.buy(); console.log(taobao.getTotal()); // 9

  • 相关阅读:
    《追风筝的人》书摘与笔记
    《清单革命》读书笔记
    华为HMS Core音频服务,让有声世界更动听
    Unity平台 | 快速集成华为性能管理服务
    【Demo见真章】投稿赢HarmonyOS手机Beta公测名额
    【开发者必看】2020年移动应用趋势洞察白皮书
    华为帐号服务升级,助力应用快速验证用户身份
    简单的路径规划案例分享
    Cocos|快速集成华为AGC云存储服务
    Flutter平台 | 零代码快速集成AGC崩溃服务
  • 原文地址:https://www.cnblogs.com/theworldofbeisong/p/9027900.html
Copyright © 2020-2023  润新知