构造函数创建私有变量(防继承)
先写一个构造函数
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却不能获取到
构造函数创建私有变量(防继承)相关推荐
- java 继承 私有变量_java – 继承和私有变量
在HourlyEmployee和SalariedEmployee子类中,我们调用super()将"name"传递给基类构造函数.我有两个问题: >变量名称来自哪里,这是aNa ...
- python私有变量和继承_python私有变量子类如何继承-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 浅谈 python 中的 私有 ...
- python私有变量和继承_python中私有变量的继承
在python中继承时,私有变量出现以下错误:AttributeError: 'dog' object has no attribute '_dog__name' 我找了很多东西,但不知道我的问题在哪 ...
- es5 温故而知新 创建私有成员、私有变量、特权变量的方法
其实js是不支持私有变量的.哪怕到es6的class语法.虽然有许多变相的方式.但非常冗余而不推崇. 这里介绍的实际上也不是class语法,而是普通的函数,并且利用IIFE(闭包)的方式来实现私有. ...
- 【JS笔记】私有变量
1.任何函数中定义的变量都可以认为是私有变量.函数内部可以访问,外部不能访问. 可以通过闭包创建特权方法访问私有变量. function Foo(){var n=10;this.returnN=fun ...
- Javascript 私有变量
转自Javascript高级程序设计(第三版): 任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量.私有变量包括函数的参数,局部变量以及在函数内部定义的其他函数. 如果在 ...
- Scratch中的全局变量,私有变量与克隆体变量(一)
许多人都知道,Scratch中有两类变量,即全局变量和私有变量.不过,克隆体变量因其隐秘,而不为许多人所知,本系列博客将介绍Scratch中的变量类型及其实际应用. 首先我们来看全局变量,在任意角色中 ...
- 【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )
文章目录 一. Dart 面向对象 二. 类定义 三. 类的继承 四. 私有变量 五. 可选参数与默认参数 六. 初始化列表 七. 完整代码示例 八. 相关资源 一. Dart 面向对象 OOP 基本 ...
- Java私有变量是否可继承
Java 父类中权限为private的私有变量,子类对象继承后,在其内存中其实也有该变量存在,只是不能直接引用该变量,而是需要通过调用父类public或protected的set或get等方法使用该变 ...
最新文章
- Linux环境编程--waitpid与fork与execlp
- codeforces685B
- 红蓝对抗 linux内网渗透
- This text field does not specify an inputType or a hint
- error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值...
- maven如何将本地jar安装到本地仓库
- 怎么用python读取大文件_使用Python读取大文件的方法
- 使用java.util.prefs.Preferences代替java.util.Properties
- win7 下 java 环境变量配置
- System Center 2016组件将发生什么变化?
- 梅科尔工作室-PR第三次培训笔记(效果与转场及插件使用)
- 最小采样频率计算公式_信号分析基础(五):信号采样与混叠概念
- MySQL数据库的DQL(数据查询语言)使用---指定查询字段、去重(distinct)、where条件子句、联表查询(xxx join)、分页(order by)和排序(limit)
- linux glib,我该如何安装glib?
- Chart-制作饼图
- iOS 中如何识别图片清晰度
- nginx的下载与安装
- AMiner论文推荐——Large-scale Localization Datasets in Crowded Indoor Spaces
- Java算法大全,java进制装换,java日期转换
- Office 佳能MP259打印EXCEL线条歪曲,字迹模糊怎么办
热门文章
- 解决easyui textarea 值不显示及获取textarea的值
- 澎思科技获洪泰基金千万级天使轮融资,深耕AI+安防行业
- 清华AI画虾师,想当现代齐白石
- 苹果、小米、荣耀智能手环都能测卫生纸心率?网友“测遍万物”玩坏了
- 英特尔无人车!灯,等灯等灯!
- 英伟达新研究:“狗生猫,猫生万物”的多模态无监督图像转换
- 数据载入过慢?这里有一份TensorFlow加速指南
- 常用插件的封装(轮播图、选项卡、楼梯导航及、拖拽)
- 《Apache Kafka 实战》读书笔记-认识Apache Kafka
- 区块链开发公司浅析区块链服务商提供哪些解决方案