前言

大家都知道, js是没有private和public关键字的, 所以js也就不存在私有属性和方法的说法.

但是js有个叫做闭包的东西, 通过该闭包就能创建私有属性和方法.

原理

js的作用域是通过原型链实现的. 我们只需要让暴露的对象引用另一个不暴露对象的属性和方法. 那么看上去暴露对象就有了私有属性和方法. 原因在于, 一个对象如果被引用, 那么就不会释放该对象存在的作用域.(万物皆对象, 属性和方法也是对象)

20200919081533-2021-12-29-21-12-05

实现

function creatPrivate(){
 var privateProperty = 'privateProperty'
 var privateMethod = function(){
   console.log('privateMethod')
 }
 return{
   publicProperty:privateProperty,
   publicMethod:privateMethod
 }

 var obj = creatPrivate()
}

console.log(obj.publicProperty) //privateProperty
console.log(obj.privateProperty) //undefined

obj.privateProperty() //privateMethod
obj.privateProperty() //undefined

上面的creatPrivate函数执行后, 返回一个对象被obj变量接收, 该对象引用了函数中的属性和方法. 所以函数虽然执行完毕, 但是不会释放privateProperty,privateMethod所在的作用域. 但是我们只能访问暴露对象的publicPropertypublicMethod. 这样就实现了私有属性和方法.

结尾

以后我们就能把不想暴露给别人的东西做成私有变量. 可以实现和php,java差不多的效果. 奥利干!

THE END
推荐文章
  • bootstrap的nav和navbar有什么区别

  • 黄帝内经-第43篇-痹论篇(2)

  • In php:7.4.1-apache, Error: unrecognized options: --with-png-dir, --with-jpeg-dir, --with-freetype-dir

  • bootstrap中container和container-fluid的区别

  • taro --watch模式正常, build模式空白页面

  • (连接不上github)关于ssh: connect to host github.com port 22: Connection timed out错误

  • Electron基本介绍

  • 活动运营

评论 共0条
文本

名字

0字

链接

链接名称

https://example.com example.com

即将访问外部链接,请注意确认目标地址的安全性

下载

名字

安全提示

本站资源均来自网络收集,下载前请注意文件安全

文件资源

文件名称

文件描述

智能体

名字

0字

输出结果

0字

开启精彩搜索

热门搜索

暂无

历史搜索

用户名/邮箱/手机号
密码
用户名
密码
重复密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

0字

新增

0字

0字

新增

0字

0字