与java等基于类的面向对象语言的private、protected、public等关键字的用途类似,基于对象的JavaScript语言,在对象构造上也存在类似的成员可见性问题。

  JavaScript对象构造的可见性定义可以分为以下几种:

  1,私有属性(private properties)
  
  通过var关键字定义对象构造中变量的作用域,该变量只能在对象构造方法的作用域内被访问。如:

function VariableTest()
{
      var myVariable;//private
}

var vt = new VariableTest();
vt.myVariable;//这里会出现undefined异常

  2,私有方法(private methods)

  与私有属性类似,只能在对象构造方法作用域内被访问。如:

Code
function MethodTest()
{
      var myMethod = function()//private
      {
            alert("private method");
      }
      
      this.invoke = function()
      {
            //能够访问到myMethod
            myMehtod();
      }
}

var mt = new MethodTest();
mt.myMethod();//错误。使用trycatch的话,可捕获“对象不支持此属性或方法”异常
mt.invoke();

  3,公共属性(public properties)

  有两种定义公共属性的途径:

  (1)通过this关键字来定义。如:

function PrivilegedVariable()
{
      this.variable = "privileged variable";
}

var pv = new PrivilegedVariable();
pv.variable;//返回 "privileged variable"

  (2)通过构造方法的原型来定义。如:

function PublicVariable(){}
PublicVariable.prototype.variable = "public variable";
var pv = new PublicVariable();
pv.variable;//返回"public variable"

  4,公共方法(public methods)

  同理,有两种定义公共方法的途径。
  
  (1)通过this关键字来定义。(2)通过构造方法的原型来定义。

  这里省略。。。。。。。。。。。

  5,静态属性(static properties)

  直接为对象构造方法添加的属性,不能被对象实例访问,只能供构造方法自身使用。如:

Code
function StaticVariable(){}
StaticVariable.variable = "static variable";

var sv = new StaticVariable();
sv.variable;//返回"undefined"
StaticVariable.prototype.variable;//返回"undefined"
StaticVariable.variable;//返回"static variable"

  6,静态方法(static methods)

  直接为对象构造方法添加的方法,不能被对象实例访问,只能供构造方法自身使用。

  代码省略。。。。。。。。

转载于:https://www.cnblogs.com/gisland/archive/2009/10/16/1584688.html

JavaScript中对象成员的可见性相关推荐

  1. JavaScript中对象(Object)的方法

    JavaScript中对象方法总结: 资料来源:网道-互联网开发文档 [https://wangdoc.com/] 1.Object.getPrototypeOf(Object) Object.get ...

  2. javascript中对象_了解JavaScript中的承诺

    javascript中对象 我向您承诺,到本文结束时,您将更好地了解JavaScript. 我与JavaScript有一种"爱与恨"的关系. 但是尽管如此,JavaScript一直 ...

  3. 删除javaScript中对象的属性

    删除javaScript中对象的属性 语法 delete 对象.属性;

  4. javascript中对象的assign()方法

    javascript中对象的assign()方法 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法: Object.assign( ...

  5. JavaScript 中对象的属性类型

    对象的属性类型 JavaScript 中的对象的属性包括数据属性和访问器属性,在 JavaScript 引擎的内部实现中定义了用于描述属性(property)的特性(attribute).规范中将特性 ...

  6. javascript中对象、JSON格式数据、创建对象的方式、数据类型分类及特点

    对象 对象指:具体的一个实物,javascript中对象是指一组没有顺序的属性和方法的集合,所有的事物都是对象,例如:函数,数组,字符串等.属性指事物的特征,一般为名词表示:方法指对象的行为,一般用动 ...

  7. javascript 无法修改 数组中对象_谈谈JavaScript中对象建立(Object)

    在这篇文章中我将会着重说明如何创建JavaScript里的对象(Object). 对象(Object)是什么? 在开始介绍如何创建对象前,我们要知道对象是什么.对象(Object)简单地来说,就是一堆 ...

  8. JavaScript中对象数据存储

    JS中对象数据存储 对象数据存储在堆栈中.栈的数据读取,写入速度快,但是存储的内容较少.堆的读取和写入速度慢,但是存储的内容多.举个例子来说就像电脑中内存和硬盘,内存就像栈,需要经常获取,写入速度比较 ...

  9. js的object的key需要引号吗,JavaScript中对象是否需要加引号?

    对象的属性名是包括空字符串在内的所有字符串. 那么问题来了,我们平时定义的对象如下,是没有引号""or''的,这样不加引号有没有错呢? 答案是,加不加分情况!但加了肯定没问题... ...

最新文章

  1. HTML DOM getElementById() 方法
  2. 30个绝对令你惊叹的墙壁涂鸦作品
  3. fastjson json串转list
  4. 修复win7+ubuntu18.10双系统引导
  5. SAP UI5 应用开发教程的学习目录
  6. 全志科技公司A83T Qt 支持双屏显示
  7. sklearn模型支持输入list吗?
  8. Linux命令解释之crontab
  9. sql选择_SQL选择成
  10. Prometheus监控学习笔记之PromQL简单示例
  11. 备份及恢复计算机名及tcp-ip配置,tcp,ip协议,修复.docx
  12. c语言小程序 祝你生日快乐!
  13. 华为android解锁,华为bootloader怎么解锁 华为手机bootloader解锁教程
  14. MAC表和ARP表的老化时间:
  15. acwing1282. 搜索关键词(AC 自动机)
  16. 祝牛年吉祥,前程似锦,吉星高照,财运亨通,合家欢乐,飞黄腾达,福如东海,寿比南山,幸福美满,官运亨通,美梦连连。
  17. 仿生象鼻机械臂的创新设计与应用研究
  18. GPS接收机(一)概述
  19. 帝国理工创新领袖:数据驱动创新的五种模式
  20. 禁果效应在游戏剧情中会有什么样的作用

热门文章

  1. 小米官宣:小米11取消附送充电器!
  2. 多人聊天室(Java)
  3. 树状数组之区间修改单点查询
  4. YUV与RGB互转各种公式 (YUV与RGB的转换公式有很多种,请注意区别!!!)
  5. java13 InputStream,Reader
  6. hdu 1874 畅通工程续(模板题 spfa floyd)
  7. 能在微软的网站找到IeWebcontrols的安装文件吗
  8. 汉堡王什么汉堡好吃_315 曝光用过期面包做汉堡:汉堡王到底怎么了?
  9. oracle查询使用or,查询视图,使用or就用不上索引
  10. python批量检索文献_自从用了Python,轻松查文献,释放80%的重复劳动时间!