封装和信息隐藏直接的关系应该算是同一个意思不同的表述方式吧,在java中使用private来实现一个变量某一个method只能在内部使用,在javasciprt中并没有该关键字,只能使用另一个概念,闭包来实现,说闭包之前先说一下javascript的三种创建对象的方式。
如有一下java代码:
public class User{
private String id;
private String name;
//get set
}
创建一个User对象
User u = new User("1","小明");
使用javascript创建一个User对象第一种方式,名其名曰门户大开型,最简单,最直接的一种方式,只提供公共的变量
var User = function(id,name){
this.id=id;
this.name=name;
}
//创建一个User对象
var User = new User('1','小明');
第二种方式,命名规范区别私有成员,即提供get set 私有变量通过_开头
var User = function(id,name){
this.setId(id);
this.setName(name);
}
User.prototype={
setId : function(id){
this._id=id
},
getId : function{
return this._id;
},
getName : function(){
return this._name;
},
setName:function(name){
this._name=name;
}
}
//创建一个User对象
var User = new User('1','小明');
以上两种方式其实差不多的,都存在一个问题就是可以直接通过对象点属性的方式改变属性的值,其实并没有完成私有化变量
下面讲解第三中方式通过闭包的方式
var User = function(id,name){
//直接声明两个变量,这两个变量的作用域只是在这个函数体之中所以外界是不能访问的
var _id,_name;
this.setId = function(id){
_id=id
},
this.getId = function(){
return _id;
},
this.getName = function(){
return _name;
},
this.setName=function(name){
_name=name;
}
this.setId(id);
this.setName(name);
}
发现没有?这种方式外界就无法直接通过对象点属性的方式修改了
静态函数的创建,其实也和闭包相关的只需要将第三种方式进行改写
var User = (function(id,name){
//此处的方法只会存在一个,无论你创建多少个User
//private方法 外界无法访问
function show(){
//...
}
return function(id,name){
//私有属性
var _id,_name;
this.setId = function(id){
_id=id
},
this.getId = function(){
return _id;
},
this.getName = function(){
return _name;
},
this.setName=function(name){
_name=name;
}
this.setId(id);
this.setName(name);
}
})();
分享到:
相关推荐
JavaScript 闭包是编程语言中的一个关键概念,尤其在JavaScript中有着重要的应用。它涉及到函数、作用域和变量持久化等多个方面,对于提升代码质量、实现模块化以及优化内存管理至关重要。本文将深入探讨JavaScript...
#### 二、闭包的组成 闭包主要由以下几个部分组成: - **函数**:闭包的核心是一个函数。 - **环境**:函数运行时所处的作用域环境。 - **外部作用域中的变量**:这些变量可以在函数内部被访问和修改。 #### 三、...
前端面试题,包含JavaScript的闭包,作用域,原型,原型链,上下文环境以及DOM,BOM封装函数深度克隆,以及一些常见的·JS问题,试题简单但是容易混淆,作为前端工程师必考题
通过学习和运用这些经典的JavaScript封装技术,开发者不仅能提升代码质量,还能跟上技术发展趋势,确保项目在未来的可扩展性和兼容性。同时,理解并熟练掌握封装原则,也是成为一名优秀JavaScript开发者的重要一步。
通过闭包可以实现数据封装和隐藏,这类似于面向对象编程中的私有成员。函数可以返回内部函数,并将这个内部函数作为闭包传递给外部,使得外部代码无法直接访问内部函数的局部变量,而只能通过闭包提供的接口来进行...
第二个例子通过立即执行函数表达式(IIFE)来解决这一问题,确保每个函数闭包都能正确地访问到各自的循环变量。 闭包是JavaScript编程中的一个重要特性,它提供了创建私有变量、管理作用域和记忆化等强大功能,使得...
在这个压缩包中,包含了10个相关的RAR子文件,可能是关于JavaScript封装技术的不同示例或者教程。 1. **对象封装**:在JavaScript中,对象可以用来封装数据和功能。通过创建具有属性和方法的对象,我们可以更好地...
3. **函数式编程**:JavaScript支持函数式编程范式,包括高阶函数、闭包、柯里化、函数组合等概念。这些技术可以帮助编写简洁且无副作用的代码。 4. **Promise和async/await**:为了解决异步编程中的回调地狱问题,...
#### 二、闭包的作用与效果 闭包的主要作用在于保留函数作用域中的变量,即使函数执行完毕后,这些变量仍然有效。闭包的存在使得外部函数的局部变量能够在函数执行结束后继续被访问,从而实现数据封装和私有化等...
### JavaScript闭包详解 #### 一、闭包概念与工作机制 **闭包**是JavaScript中最强大的特性之一,它使得函数能够记住并访问其定义时所在的作用域中的变量。要理解和运用闭包,首先需要理解作用域、作用域链以及...
这个特性使得闭包在JavaScript中具有强大的能力,如数据封装、作用域链、内存管理和异步处理等。 首先,我们来看一个简单的闭包实例。假设我们有一个外部函数`outerFunction`,它内部定义了一个返回的内部函数`...
JavaScript的闭包是该语言的一个核心概念,对于理解JavaScript的高级用法至关重要。闭包是一种特殊的函数,它能够记住并访问所在的词法作用域,即使在当前函数已经执行完毕之后也是如此。闭包有几个重要特点,它让...
这种特性使得闭包成为JavaScript中实现数据封装和私有变量的关键工具。 首先,闭包是由于JavaScript的函数作用域机制产生的。在JavaScript中,每个函数都有自己的作用域,内部函数可以访问外部函数的变量,但外部...
在JavaScript的世界里,...同时,利用JavaScript的闭包模式,我们可以有效地管理和封装这些请求。在实际应用中,我们还需要处理错误、支持POST请求、处理JSON数据等更复杂的场景,但这些基础将为你打开Ajax世界的大门。
闭包可以用来创建私有变量,防止变量在全局作用域被访问和修改,这在模块化和封装变量时非常有用。 要熟练掌握JavaScript闭包,需要通过实际代码的编写和练习来加深理解。创建闭包的基本方法是定义一个函数,然后在...
JavaScript中的闭包是一种重要的编程概念,它涉及到函数和作用域的高级用法。闭包简单来说,就是一个函数能够访问并操作其外部作用域中的变量,即使在其外部函数已经执行完毕后,仍然能保持对外部作用域的访问权限。...
总的来说,闭包是JavaScript中强大且灵活的工具,用于实现封装、数据隐私以及模块化等高级编程模式。尽管使用时需谨慎,以防止内存问题,但正确掌握和利用闭包,能够显著提高代码质量及可维护性。
闭包常常用于封装变量和实现私有方法,提高代码的封装性和安全性。 总结一下,JavaScript中的函数不仅是一种数据类型,还是实现面向对象编程的核心工具。通过原型链,我们可以实现基于原型的继承;通过闭包,我们...
在这个场景中,我们讨论的是一个名为"layer.rar"的压缩包,它包含了一个利用JavaScript闭包技术封装的提示模态框。这个模态框设计得既适应PC设备,也能在不同分辨率的设备上良好运行,体现了响应式设计的概念。 ...