先写一个构造函数

    function NumberCount() {this.number = 500return {getNumber: ()=> {return this.number}}}

let n = new NumberCount;
console.log(n.getNumber()) // 500
console.log(n.number) // undefined

这样就创建了函数的私有变量

为什么?

函数对象的定义是:具有 [[call]] 私有字段的对象,构造器对象的定义是:具有[[construct]]的对象。

换句话说任何对象实现了[[call]]就是函数对象,可以当做函数被调用,实现了[[construct]]就是构造器对象,可以作为构造器被调用。但是他们并不总是一致的

[[construct]]的执行大概有以下步骤

基于对象的原型Object.prototype创建一个新的对象,把this传给[[call]]。如果[[call]]的返回值是一个对象,返回这个对象,如果返回不是对象,就返回基于原型创建的新的对象。

所以文章开头的代码也就一目了然,为什么通过getNumber能获取到 直接n.number却不能获取到

构造函数创建私有变量(防继承)相关推荐

  1. java 继承 私有变量_java – 继承和私有变量

    在HourlyEmployee和SalariedEmployee子类中,我们调用super()将"name"传递给基类构造函数.我有两个问题: >变量名称来自哪里,这是aNa ...

  2. python私有变量和继承_python私有变量子类如何继承-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 浅谈 python 中的 私有 ...

  3. python私有变量和继承_python中私有变量的继承

    在python中继承时,私有变量出现以下错误:AttributeError: 'dog' object has no attribute '_dog__name' 我找了很多东西,但不知道我的问题在哪 ...

  4. es5 温故而知新 创建私有成员、私有变量、特权变量的方法

    其实js是不支持私有变量的.哪怕到es6的class语法.虽然有许多变相的方式.但非常冗余而不推崇. 这里介绍的实际上也不是class语法,而是普通的函数,并且利用IIFE(闭包)的方式来实现私有. ...

  5. 【JS笔记】私有变量

    1.任何函数中定义的变量都可以认为是私有变量.函数内部可以访问,外部不能访问. 可以通过闭包创建特权方法访问私有变量. function Foo(){var n=10;this.returnN=fun ...

  6. Javascript 私有变量

    转自Javascript高级程序设计(第三版): 任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量.私有变量包括函数的参数,局部变量以及在函数内部定义的其他函数. 如果在 ...

  7. Scratch中的全局变量,私有变量与克隆体变量(一)

    许多人都知道,Scratch中有两类变量,即全局变量和私有变量.不过,克隆体变量因其隐秘,而不为许多人所知,本系列博客将介绍Scratch中的变量类型及其实际应用. 首先我们来看全局变量,在任意角色中 ...

  8. 【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )

    文章目录 一. Dart 面向对象 二. 类定义 三. 类的继承 四. 私有变量 五. 可选参数与默认参数 六. 初始化列表 七. 完整代码示例 八. 相关资源 一. Dart 面向对象 OOP 基本 ...

  9. Java私有变量是否可继承

    Java 父类中权限为private的私有变量,子类对象继承后,在其内存中其实也有该变量存在,只是不能直接引用该变量,而是需要通过调用父类public或protected的set或get等方法使用该变 ...

最新文章

  1. Linux环境编程--waitpid与fork与execlp
  2. codeforces685B
  3. 红蓝对抗 linux内网渗透
  4. This text field does not specify an inputType or a hint
  5. error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值...
  6. maven如何将本地jar安装到本地仓库
  7. 怎么用python读取大文件_使用Python读取大文件的方法
  8. 使用java.util.prefs.Preferences代替java.util.Properties
  9. win7 下 java 环境变量配置
  10. System Center 2016组件将发生什么变化?
  11. 梅科尔工作室-PR第三次培训笔记(效果与转场及插件使用)
  12. 最小采样频率计算公式_信号分析基础(五):信号采样与混叠概念
  13. MySQL数据库的DQL(数据查询语言)使用---指定查询字段、去重(distinct)、where条件子句、联表查询(xxx join)、分页(order by)和排序(limit)
  14. linux glib,我该如何安装glib?
  15. Chart-制作饼图
  16. iOS 中如何识别图片清晰度
  17. nginx的下载与安装
  18. AMiner论文推荐——Large-scale Localization Datasets in Crowded Indoor Spaces
  19. Java算法大全,java进制装换,java日期转换
  20. Office 佳能MP259打印EXCEL线条歪曲,字迹模糊怎么办

热门文章

  1. 解决easyui textarea 值不显示及获取textarea的值
  2. 澎思科技获洪泰基金千万级天使轮融资,深耕AI+安防行业
  3. 清华AI画虾师,想当现代齐白石
  4. 苹果、小米、荣耀智能手环都能测卫生纸心率?网友“测遍万物”玩坏了
  5. 英特尔无人车!灯,等灯等灯!
  6. 英伟达新研究:“狗生猫,猫生万物”的多模态无监督图像转换
  7. 数据载入过慢?这里有一份TensorFlow加速指南
  8. 常用插件的封装(轮播图、选项卡、楼梯导航及、拖拽)
  9. 《Apache Kafka 实战》读书笔记-认识Apache Kafka
  10. 区块链开发公司浅析区块链服务商提供哪些解决方案