我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Javascript中的私有成员是什么意思

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Javascript中的私有成员是什么意思

这篇文章主要介绍“Javascript中的私有成员是什么意思”,在日常操作中,相信很多人在Javascript中的私有成员是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Javascript中的私有成员是什么意思”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

私有Private成员要由构造器生成。这个构造器有三个私有实例变量:param, secret, 和 self。它们被附加到了对象上,但它们无法从外部访问,同时它们也无法被这个对象的公共方法所访问。他们只对私有成员可见。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

JavaScript 是世界上最被误解的语言。很多人认为它缺乏信息隐藏的特性所以对象不能有私有实例变量和方法。但这是一个误解。JavaScript对象同样可以拥有私有变量。下面就讲解一下:

对象

JavaScript根本上都是关于的对象(Object)的。数组(Array)是对象,函数(Function)是对象,Object就不说了。那什么是对象?对象是名称-值的配对的集合。名称是字符串,值可以是字符串、数字、布尔值和对象(包括数组和函数)。对象常常实现为哈希表以快速存取值。

如果一个值是函数,我们可以将它视为方法method。当调用一个对象的方法时,this 变量就会被设为该对象。这个方法就可以通过this变量访问实例变量。

对象是由构造器constructor产生的,它是初始化对象的函数。构造器提供了其它语言中类提供的特性,包括静态方法和变量。

公共成员

对象的成员都是 public 公共成员。任何函数都可以访问、修改或者删除这些成员。有两种主要的途径给新的对象加入成员:

构造器中

这个技术一般用来初始化公共实例变量。构造器的this变量是用来向对象添加成员的。

function Container(param) {    
    this.member = param;
}

这样,如果我们构造一个新的对象

var myContainer = new Container('abc');

那么myContainer.member 就会包含'abc'。

原型中

这个技巧一般用来添加公共方法。当一个成员被检索且没有在对象中发现的时候,那么它就会从对象构造器的 prototype 成员中去获取它。这个原型机制可用来实现继承。它也保存内存。要为一个构造器生成的所有对象加入一个方法,将函数加入构造器的prototype 中:

Container.prototype.stamp = function (string) {
	return this.member + string;
}

这样,我们可以调用这个方法

myContainer.stamp('def')

它会返回'abcdef'.

私有成员

私有Private成员要由构造器生成。构造器中的普通的var变量和参数都成为私有成员。

function Container(param) {
	this.member = param;
    var secret = 3;
    var self = this;
    }

这个构造器有三个私有实例变量:param, secret, 和 self。它们被附加到了对象上,但它们无法从外部访问,同时它们也无法被这个对象的公共方法所访问。他们只对私有成员可见。私有方法则是构造器内部的函数。

function Container(param) {

	function dec() {
		if (secret > 0) {
			secret -= 1;
			return true;
		} else {
			return false;
		}
	}

	this.member = param;
	var secret = 3;
	var self = this;
}

私有方法 dec 检查 secret 实例变量。如果它大于0,就减少secret 的大小并返回 true 。否则它返回 false 。这个可以限制对象使用三次。

按照惯例,我们给出一个私有的 self 参数。这个可以令对象对私有方法可见。这种做法是因为ECMAScript Language Specification中的一个错误,这个错误令 this 不能正确地对内部函数设置。

私有方法无法被公共方法调用。要令私有方法有用,我们需要引入一种特权方法。

特权成员

一个特权A privileged 方法可以访问私有的变量和方法,同时它对公共域可见。也可以删除或替换一个特权方法,但不能改变它。

特权方法是用 this 在构造器中分配的。

function Container(param) {

	function dec() {
		if (secret > 0) {
			secret -= 1;
			return true;
		} else {
			return false;
		}
	}

	this.member = param;
	var secret = 3;
	var self = this;

	this.service = function () {
		if (dec()) {
			return self.member;
		} else {
			return null;
		}
	};
}

service 就是一个特权方法。前三次调用会返回'abc'。之后 ,它会返回 null。service调用的私有的 dec 方法,而 dec又访问了私有的 secret变量。service对其它的对象和方法是可见的,但不能直接访问私有成员。

闭包

这种公共、私有和特权成员的模式是可行的原因是由于JavaScript有 closure闭包。这个意味着一个内部的函数总是可以访问这个函数外部的变量和参数,甚至在外部的函数返回之后。这是这个语言的一个极其强大的特性。目前没有哪本关于JavaScript编程的书展示了如何发掘这个特性。大多数都没有提到。

私有和特权成员只能在对象构造的时候生成。公共成员可以在任意时刻添加。

模式

公共(Public)

function Constructor(...) {
	this.membername = value;
}
Constructor.prototype.membername = value;

私有(Private)

function Constructor(...) {  
	var self =  this;
	var membername =  value;  
	function  membername(...)  {...}
}

注意,实际上函数语句

function  membername(...)  {...}

是以下语句的缩写,两者相同:

var  membername = function  membername(...)  {...};

特权(Privileged)

function Constructor(...) {  
	this.membername =  function (...)  {...};
}

到此,关于“Javascript中的私有成员是什么意思”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Javascript中的私有成员是什么意思

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php中成员方法的意思是什么

PHP中的成员方法是类的一部分,需要一个类的实例才能被调用。通过访问修饰符(public、protected、private),可以控制方法的可见性和调用方式。使用实例操作符(->)调用成员方法,并可以传递参数和返回值。成员方法用于封装类的行为,使其更易于维护和理解。
php中成员方法的意思是什么
2024-04-25

php中成员方法的意思是什么

在PHP中,成员方法也就是成员函数,用于访问对象的数据,是在类的内部进行定义的,语法为“function 方法名(参数..){[方法体][return 返回值]}”。
2017-02-04

python封装中私有成员指的是什么

这篇文章将为大家详细讲解有关python封装中私有成员指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题
2023-06-14

php成员变量是什么意思

在php中,成员变量是指在类中直接声明的变量,声明语法“访问权限修饰符 变量名称 = 变量值;”;成员变量的值对外不可见,但可通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。类中可声明多个变量,即对象中可以有多个成员变量。
2021-02-09

javascript中$指的是什么意思

小编给大家分享一下javascript中$指的是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascript中“$”的意思:1、“$”可以用来表示变
2023-06-14

javascript中$是指什么意思

小编给大家分享一下javascript中$是指什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript可以做什么1.可以使网页具有交互性,例如响
2023-06-14

javascript中let是什么意思

这篇文章主要讲解了“javascript中let是什么意思”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中let是什么意思”吧!1、ES2015(ES6) 新增加了两个重
2023-06-20

编程热搜

目录