JavaScript中的私有成员 Javascript教程(2)
作者:Douglas Crockford 发布时间:2008-12-02 17:57:00
标签:私有,对象,Object,javascript,教程
特权成员
一个特权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 (...) {...};
}


猜你喜欢
- 前端版本更新检查,实现页面自动刷新使用vite对项目进行打包,对 js 和 css 文件使用了 chunkhash 进行了文件缓存控制,但是
- 前言声明:python版本3.6,以下讨论的Python也都是适用于3.x版本在实际使用安装python的pip安装 依赖库是非常的便捷的。
- bootstrap中有javascript插件modal也就是对话框,加入拖拽功能,具体内容如下在使用modal时首选需要引用js<l
- 简介:设计稿尺寸标注与取色专用工具,适用于设计、界面开发与网页前端安装包仅700KB,全绿色独有的双模式切换可支持双屏显示器,一面设计,一面
- 废话不多说,先给大家看下python实现屏幕截图的代码,具体代码如下所述:from selenium import webdriverimp
- 用法本脚本用于批量扫描端口 1.在同目录下创建输入文件,属性inputFile为输入文件名2.属性th为线程数3.属性port为探测的目标端
- 两年前发表的《The visual design of Web 2.0》中提到“Rounded everything”,圆角因使人感觉舒适的
- 有这样一类文章标题,喜欢学习的人肯定见过:使用Google的7个技巧Web设计中9个常见的可用性错误Adobe Photoshop 75个技
- 本文讲解如何设置SQL Server数据库全文索引服务。在Microsoft SQL Server 7.0 中提供了全文索引服务(Full-
- 前言在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些
- 1、定义具名元组需要2个参数,第1个参数是类名,第2个参数是字段名,既可以是可迭代对象(如列表和元组),也可以是空格间隔的字符串:Card
- 代码如下:---在仓储管理中经常会碰到的一个问题 一、关于LIFO与FIFO的简单说明 ---FIFO: First in, First o
- 最近看到市场上各种的文档格式转换软件,要么是收费、要么是有大量的广告。于是学习了一下 PyQt5 的页面操作,再加上了解 pandas 的使
- 当前,数据可视化已经成为数据科学领域非常重要的一部分。不同网络系统中产生的数据,都需要经过适当的可视化处理,以便更好的呈现给用户读取和分析。
- 目录项目地址所用到的技术开始编写爬虫项目地址https://github.com/aliyoge/fund_crawler_py所用到的技术
- 目录前言 字符串都有哪些操作?第一类 判断识别字符串第二类 字符串编辑的操作第三类:字符串跟字节串的互转总结前言今天我们说了字符串
- 代码如下# -*- coding = utf-8 -*-# @time:2020/5/28/028 21:00# Author:cyx# @
- 在之前的博客 人脸识别经典算法一:特征脸方法(Eigenface)里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在
- 这主要是写给我自己的,防止以后入坑,耗费时间。本文主要谈的是怎样安装Python解释器和Python开发工具PyCharm。 本机系统
- 这篇文章主要介绍了Python插入Elasticsearch操作方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考