博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构造函数创建私有变量(防继承)
阅读量:7125 次
发布时间:2019-06-28

本文共 596 字,大约阅读时间需要 1 分钟。

先写一个构造函数

function NumberCount() {        this.number = 500        return {            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却不能获取到

转载地址:http://maael.baihongyu.com/

你可能感兴趣的文章
页面被刷新两次异常
查看>>
java小知识点
查看>>
Linux 配置ip,远程,验证,运行,救援,相关
查看>>
使用jQuery background-position插件来创建超酷的导航条效果
查看>>
写时拷贝技术
查看>>
日志收集三:rsyslog + elasticsearch + kibana
查看>>
JSONObject不报错 不执行 直接 导致系统直接404
查看>>
Android ViewPager
查看>>
RODPS介绍
查看>>
iSCSI远程块存储
查看>>
第三周linux博文
查看>>
笔记 10 11 13
查看>>
IT界的求职简历应该怎么写?
查看>>
linux环境变量
查看>>
yarn任务调度--capacity scheduler(容量调度) / fair schedule
查看>>
变换用户身份为root的方法su 与 sudo
查看>>
你所不了解的VR
查看>>
修改mysql密码
查看>>
nginx简述
查看>>
经典开源PHP项目
查看>>