JavaScript-封装性
局部变量和局部函数
- 无论是 ES6 之前还是 ES6,只要定义一个函数就会开启一个新的作用域
- 只要在这个新的作用域中,通过
let/var
定义的变量就是局部变量
- 只要在这个新的作用域中,定义的函数就是局部函数
什么是对象的私有变量和函数
- 默认情况下对象中的属性和方法都是公有的,只要拿到对象就能操作对象的属性和方法
- 外界不能直接访问的变量和函数就是私有变量和私有函数
- 构造函数的本质也是一个函数,所以也会开启一个新的作用域,所以在构造函数中定义的变量和函数就是私有变量和私有函数
什么是封装
- 封装性就是隐藏实现细节,仅对外公开接口
为什么要封装
- 不封装的缺点,当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对属性的管理权,别人可以任意的修改你的属性
- 封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改,封装是面向对象设计本质(将变化隔离)这样降低了数据被误用的可能(提高安全性和灵活性)
那么本文就不举反例,直接上正例,代码如下所示,想年龄这种变量是不可能存在负数的,所以可以使用封装来进行限制和过滤如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript-封装性</title>
<script>
function Person() {
this.name = "BNTang";
let age = 34;
this.setAge = function (myAge) {
if (myAge >= 0) {
age = myAge;
}
}
this.getAge = function () {
return age;
}
this.say = function () {
console.log("hello world");
}
}
let obj = new Person();
obj.setAge(-3);
console.log(obj.getAge());
</script>
</head>
<body>
</body>
</html>
分类:
ECMAScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具