严格的来讲,js里面并没有静态与私有的概念,所有成员属性都是公开的,下面只是参考java语言,通过某种方式来实现类似的概念。

静态变量

1.私有静态变量

所有实例共享。因为是私有的变量,所以不能通过函数名直接访问。通过闭包来实现。
根据闭包的作用域原理,只能在闭包内部访问。所以,并不是类的任何地方都可以访问这个静态变量。只有类的构造函数或者方法(原型方法),在闭包内部才可以访问。

(function(){ var privateStatic = “privatestatic”;  Func = function(){  this.setPrivateStatic = function(value){  privateStatic = value;  }  this.getPrivateStatic = function(){  return privateStatic;  }
}
})();  var func1 = new Func();
var func2 = new Func();
console.log(func1.getPrivateStatic());// privatestatic  console.log(func2.getPrivateStatic());// privatestatic
console.log(func1.setPrivateStatic(‘changed’));
console.log(func2.getPrivateStatic()); //changed

2.公共静态变量

这个比较简单,直接对函数定义属性。
Backbone的extend函数,有两个参数,第一个参数是实例变量,第二个参数是静态变量。期中静态变量的实现就是这种方式。

Func = function(){  this.test = 'test';  }  Func.acfun= 'ne';  console.log(Func.acfun); //net

实例变量

1.私有实例变量

在构造函数里面,通过var定义的变量,都是私有实例变量,只有在构造的内部才能访问。

var Person = function(value){  var age =value;  this.getAge = function(){  return age;  }  }  Person.prototype._getAge = function(){  return age;  }  var yaoming = new Person('27');  console.log(yaoming.age) //undefined  console.log(yaoming.getAge()) //27  console.log(yaoming._getAge()) // age is not defined,原型方法不能访问age,仅在构造函数内部可以访问私有实例变量

2.公共实例变量

在构造函数或原型方法中使用this定义的属性,以及原型中定义的属性.
使用new 操作符对构造函数是实例化,会创建一个新的对象,并且将构造函数的作用域赋给新对象,并执 行代码,那么构造函数中如果有this定义属性或方法,则是对新对象添加属性或方法。

var Person = function(name){  this.name = name;  }  Person.prototype.age = '11';  var yaoming = new Person('ym');  console.log(yaoming.name);  console.log(yaoming.age); //11

Javascript函数内静态变量与实例变量相关推荐

  1. 全局变量、成员变量、类变量、静态变量、实例变量、局部变量的定义与区别

    全局变量 全局变量又叫成员变量,它是声明在类里,函数,静态语句块外的变量,全局变量又分为类变量(静态变量).实例变量两种. 通过代码来看一下: private int i;//实例变量 private ...

  2. python 中全局变量、局部变量、静态变量,实例变量的区别和理解

    python 中全局变量.局部变量.静态变量,实例变量的区别和理解 在python中一个XXX.py 文件可能有多个类所以要严格区分这些变量 全局变量: 在这个模块内也就是在整个.py 文件里,并且在 ...

  3. java线程安全问题之静态变量、实例变量、局部变量

    转载 java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定 ...

  4. 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。

    类体由2部分构成: 一部分是变量的定义; 一部分是方法的定义(一个类中可以有多个方法) 在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效. (全局变量应该是成员变量的俗称) 在方法体 ...

  5. java三大变量——静态变量、实例变量、局部变量

    文章目录 前言 一.java中变量分类 二.三者的区别与联系 1.静态变量.实例变量.局部变量区别 2.成员变量的两种细分类型的区别 总结 前言 变量是内存当中存储数据最基本的单元,将数据(字面量)放 ...

  6. 常见Java面试题之静态变量和实例变量的区别

    静态变量和实例变量的区别有哪些? 静态变量和实例变量可能大多数同学用的比较多,但是相关阐述并不是很常见,尤其对新手同学可以不能清楚表达. 静态变量和实例变量也是最经常遇到的一个基础java面试题,不管 ...

  7. java静态变量实例变量_java中静态变量和实例变量的区别

    实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用 静态变量:不需要创建实例对象就可以直接使用类名进行引用 public class Different { public static in ...

  8. C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量

    摘要:2012年09月30日歪曲事实中秋佳节快乐除了撞单,我又交待道,不要轻易过去面谈,功能上差不多,那个单是早就谈好了的,不知道他的目的是什么,招聘中人员的中秋佳节快乐分配也是经理们比较在意的,怎么 ...

  9. java 线程安全问题之静态变量、实例变量、局部变量

    2019独角兽企业重金招聘Python工程师标准>>> java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编 ...

最新文章

  1. linux内存分配 连续 足够,linux内存池能分配连续物理内存吗
  2. Spring知识点总结-2
  3. Java笔记(持续更新中)
  4. linux 占用cpu 脚本,消耗CPU资源的shell脚本
  5. zerodivisionerror什么意思python-python里的raise是什么意思
  6. Java应用梯度下降求解线性SVM模型参考代码
  7. 【网络安全】浅析跨域原理及如何实现跨域
  8. 【C++】Visual Studio教程(一)-概述
  9. “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere
  10. 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者
  11. 宁波python学习_python学习第五天
  12. Python 数据结构与算法——引用计数
  13. matlab中转置矩阵的特征值,矩阵乘以矩阵的转置运算的解析
  14. 软件工程:数据流图,数据字典的画法,以及如何转化为软件结构图
  15. 海致大数据京信_2018华为全联接大会|海致网聚提出公安大数据个人计算新理念...
  16. matlab电学成像,利用MATLAB进行电磁学计算及可视化教学.PDF
  17. Aspose.Cells企业案例:Setec 为物联网传感器和能源节约和消耗生成自动内部报告
  18. 炫“库”行动-人大金仓有奖征文-KingbaseES V8R6 手工创建主备流复制集群案例
  19. GSoC 2015 总结
  20. unchecked runtime.lasterror: cannot create item with duplicate id XXX 谷歌浏览器扩展插件开发问题

热门文章

  1. NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现
  2. 项目管理修炼之道之把握项目的节奏
  3. oracle问题诊断,Oracle之常见问题诊断方法
  4. 十六进制数高位和低位的结合与分离
  5. 制作openstack镜像win7.qcow2(centos/ubuntu/win镜像分享)
  6. linux串口驱动安装 RPM,Devart数据库工具【教程】:在Linux(DEB / RPM)上安装和配置ODBC驱动程序...
  7. 罗老师的Android底层开发问答链接
  8. 深度学习框架智能时代的操作系统是什么?
  9. 期末复习操作系统---设备管理
  10. 苹果电脑系统还原出现服务器,苹果电脑恢复出厂设置【应对方向】