Javascript函数内静态变量与实例变量
严格的来讲,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函数内静态变量与实例变量相关推荐
- 全局变量、成员变量、类变量、静态变量、实例变量、局部变量的定义与区别
全局变量 全局变量又叫成员变量,它是声明在类里,函数,静态语句块外的变量,全局变量又分为类变量(静态变量).实例变量两种. 通过代码来看一下: private int i;//实例变量 private ...
- python 中全局变量、局部变量、静态变量,实例变量的区别和理解
python 中全局变量.局部变量.静态变量,实例变量的区别和理解 在python中一个XXX.py 文件可能有多个类所以要严格区分这些变量 全局变量: 在这个模块内也就是在整个.py 文件里,并且在 ...
- java线程安全问题之静态变量、实例变量、局部变量
转载 java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定 ...
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
类体由2部分构成: 一部分是变量的定义; 一部分是方法的定义(一个类中可以有多个方法) 在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效. (全局变量应该是成员变量的俗称) 在方法体 ...
- java三大变量——静态变量、实例变量、局部变量
文章目录 前言 一.java中变量分类 二.三者的区别与联系 1.静态变量.实例变量.局部变量区别 2.成员变量的两种细分类型的区别 总结 前言 变量是内存当中存储数据最基本的单元,将数据(字面量)放 ...
- 常见Java面试题之静态变量和实例变量的区别
静态变量和实例变量的区别有哪些? 静态变量和实例变量可能大多数同学用的比较多,但是相关阐述并不是很常见,尤其对新手同学可以不能清楚表达. 静态变量和实例变量也是最经常遇到的一个基础java面试题,不管 ...
- java静态变量实例变量_java中静态变量和实例变量的区别
实例变量:只有在创建了实例对象之后才会被分配空间,才可以使用 静态变量:不需要创建实例对象就可以直接使用类名进行引用 public class Different { public static in ...
- C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
摘要:2012年09月30日歪曲事实中秋佳节快乐除了撞单,我又交待道,不要轻易过去面谈,功能上差不多,那个单是早就谈好了的,不知道他的目的是什么,招聘中人员的中秋佳节快乐分配也是经理们比较在意的,怎么 ...
- java 线程安全问题之静态变量、实例变量、局部变量
2019独角兽企业重金招聘Python工程师标准>>> java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编 ...
最新文章
- linux内存分配 连续 足够,linux内存池能分配连续物理内存吗
- Spring知识点总结-2
- Java笔记(持续更新中)
- linux 占用cpu 脚本,消耗CPU资源的shell脚本
- zerodivisionerror什么意思python-python里的raise是什么意思
- Java应用梯度下降求解线性SVM模型参考代码
- 【网络安全】浅析跨域原理及如何实现跨域
- 【C++】Visual Studio教程(一)-概述
- “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere
- 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者
- 宁波python学习_python学习第五天
- Python 数据结构与算法——引用计数
- matlab中转置矩阵的特征值,矩阵乘以矩阵的转置运算的解析
- 软件工程:数据流图,数据字典的画法,以及如何转化为软件结构图
- 海致大数据京信_2018华为全联接大会|海致网聚提出公安大数据个人计算新理念...
- matlab电学成像,利用MATLAB进行电磁学计算及可视化教学.PDF
- Aspose.Cells企业案例:Setec 为物联网传感器和能源节约和消耗生成自动内部报告
- 炫“库”行动-人大金仓有奖征文-KingbaseES V8R6 手工创建主备流复制集群案例
- GSoC 2015 总结
- unchecked runtime.lasterror: cannot create item with duplicate id XXX 谷歌浏览器扩展插件开发问题
热门文章
- NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现
- 项目管理修炼之道之把握项目的节奏
- oracle问题诊断,Oracle之常见问题诊断方法
- 十六进制数高位和低位的结合与分离
- 制作openstack镜像win7.qcow2(centos/ubuntu/win镜像分享)
- linux串口驱动安装 RPM,Devart数据库工具【教程】:在Linux(DEB / RPM)上安装和配置ODBC驱动程序...
- 罗老师的Android底层开发问答链接
- 深度学习框架智能时代的操作系统是什么?
- 期末复习操作系统---设备管理
- 苹果电脑系统还原出现服务器,苹果电脑恢复出厂设置【应对方向】