JavaScript中的对象和封装

本文深入探讨了JavaScript中创建对象的方法,包括字面常量法和定义构造函数,并详细阐述了封装作为面向对象语言三大特性之一在JavaScript中的实现方式。文章还讲解了如何利用闭包特性实现私有变量、静态变量以及私有静态变量,并提供了实例说明。最后,总结了闭包的使用场景及可能引发的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在JavaScript中创建对象

1.  字面常量法  

var person = {};

2.  定义构造函数  

function Person(){};

                var person = function(){}  

//定义一个person变量 并将匿名函数赋值给这个变量 

                var person = new Function();  

 

封装作为面向对象语言的三大特性之一  JavaScript是如何实现的呢?

 

首先定义一个对象

function person(name){

this.name = name;

}

person.prototype = {

getName : function(){

return this.name;

}

}

 

这里的name和getName是共有的方法都可以访问。  JavaScript中只有函数作用域所以要实现私有变量可以这样

 

function person(newName){

var name;

//在这里定义特权函数可以访问私有变量  这里利用了JavaScript中的闭包特性

this.setName = function(){

name = newName;

}

this.getName = function(){

return name;

}

}

person.prototype = {

//定义其他不需要方法私有变量的函数

}

 

如果我们要实现类的私有静态变量和共有静态变量呢?

静态变量是类级别的所以可以通过类名直接调用要想实现私有就必须使用闭包

 

var person  = (function(){

 

  var person.wife = "tong";

  return function(){

var name;

this.setName = function(){

name = newName;

}

this.getName = function(){

return name;

}

//可以再这里使用类的静态私有变量

})();

 

person.prototype = {

}

 

在上面的实例中我们大量的使用了闭包的特性 

现在总结下闭包的使用场景:

1.  创建函数或者对象的私有变量 

2.  将一段代码封装成一个模块,避免和外界的命名冲突

不过闭包也容易引起问题  例如内存泄露。

关于内存泄露会重新写一篇文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值