JavaScript对象封装:私有属性与特权方法详解

作者:纸飞机

时间:2026-10-24

浏览:494

本文介绍JavaScript中通过函数作用域实现信息封装的技术。重点讲解如何利用特权方法访问私有数据,以及公有方法在原型链上的内存优化机制。通过Person类示例,演示如何平衡数据隐私与内存效率,掌握JavaScript面向对象编程的核心概念。

文章目录

JavaScript对象的信息封装

JavaScript对象的信息封装


在开始编写代码之前,有必要先明确几个核心概念。


封装是指将内部数据的表现形式及具体实现细节隐藏起来,不对外直接暴露。


私有属性和方法是指那些无法被外部直接访问的成员,外界只能通过公开的接口进行存取和交互。


在JavaScript中,作用域的概念仅存在于函数级别。这意味着在函数内部定义的变量或方法,在函数外部是无法直接访问的。


特权方法是指定义在函数内部的方法,它能够访问函数内部的变量(即私有属性)。需要注意的是,每创建一个实例,就会生成一个新的特权方法副本,这会消耗较多的内存空间。


p.setData("sky", "26", "vece@vip.qq.com");

特权方法与公有方法的实现

具体实现代码如下:

 
function Person() {
{ 
/* 
/* 声明私有的数据成员 */
/* 包括昵称、年龄和邮箱 */
*/ 
var nickName, age, email;
/* 
/* 定义需要访问私有数据的方法(即特权方法) */
/* 注意:每生成一个实例,都会为特权方法创建一个新的副本,这会占用更多内存 */
*/ 
this.setData = function(pNickName, pAge, pEmail) {
{ 
nickName = pNickName;
age = pAge;
email = pEmail;
}; 
};
{ 
this.getData = function() {
} 
} 
/* 
return [nickName, age, email];
};
*/ 
/* 定义不需要直接访问私有数据的方法(即公有方法) */
/* 无论生成多少个实例,公有方法在内存中只存在一份,通过原型链共享 */
{ 
Person.prototype = {
} 
} 


showData: function() {


p.showData();

alert("个人信息:" + this.getData().join());

 
},
p.setData("sky", "26", "vece@vip.qq.com");
外部代码通过调用私有或公有方法来存取内部属性。

代码使用示例

使用示例代码如下:



var p = new Person();

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章