Javascript静态变量与实例变量
来源:互联网 发布:网络运维系统 编辑:程序博客网 时间:2024/06/04 19:27
严格的来讲,js里面并没有静态与私有的概念,所有成员属性都是公开的,下面只是参考OO语言,通过某种方式来实现类似的概念。
一。静态变量
1.私有静态变量
所有实例共享。因为是私有的变量,所以不能通过函数名直接访问。通过闭包来实现。
根据闭包的作用域原理,只能在闭包内部访问。所以,并不是类的任何地方都可以访问这个静态变量。只有类的构造函数或者方法(原型方法),在闭包内部才可以访问。
Js代码
- (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函数,有两个参数,第一个参数是实例变量,第二个参数是静态变量。期中静态变量的实现就是这种方式。
Js代码
1. Func = function(){ 2. this.test = 'test'; 3. } 4. Func.acfun= 'ne'; 5. console.log(Func.acfun); //net
二。实例变量
1.私有实例变量
在构造函数里面,通过var定义的变量,都是私有实例变量,只有在构造的内部才能访问。
Js代码
1. var Person = function(value){ 2. var age =value; 3. this.getAge = function(){ 4. return age; 5. } 6. } 7. Person.prototype._getAge = function(){ 8. return age; 9. } 10. 11. var yaoming = new Person('27'); 12. console.log(yaoming.age) //undefined 13. console.log(yaoming.getAge()) //27 14. console.log(yaoming._getAge()) // age is not defined,原型方法不能访问age,仅在构造函数内部可以访问私有实例变量 2.公共实例变量在构造函数或原型方法中使用this定义的属性,以及原型中定义的属性.使用new 操作符对构造函数是实例化,会创建一个新的对象,并且将构造函数的作用域赋给新对象,并执 行代码,那么构造函数中如果有this定义属性或方法,则是对新对象添加属性或方法。
Js代码
1. var Person = function(name){ 2. this.name = name; 3. } 4. Person.prototype.age = '11'; 5. 6. var yaoming = new Person('ym'); 7. console.log(yaoming.name); 8. console.log(yaoming.age); //11
0 0
- Javascript静态变量与实例变量
- javascript 静态变量与实例变量
- Javascript静态变量与实例变量
- 静态变量与实例变量
- 静态变量与实例变量
- 静态变量与非静态变量实例
- 实例变量与静态变量的区别
- C#静态变量与实例变量
- 静态变量与实例变量的区别
- 静态变量与实例变量的区别
- 静态变量与实例变量区别
- 静态变量与实例变量的区别
- 静态变量与实例变量的区别
- 静态变量与实例变量的区别?
- 静态变量与实例变量的区别
- 静态变量与实例变量的区别
- 静态变量与实例变量的区别
- 常量与变量、静态变量与实例变量
- java锁机制
- redis集群搭建
- 谈谈学习方法
- OPPO使用Google三件套教程
- C#当前页面跳转当前页面
- Javascript静态变量与实例变量
- hibernate5--1.入门及核心API
- NSAppleScript execution fails in sandboxed app
- IE矩阵滤镜Matrix旋转与缩放及结合transform的拓展
- 中科院计算所培训中心|大数据专业术语汇总!
- mybatis二级缓存之ehcache
- 机器学习第三章复习(2)
- 【REST】REST、RESTFUL的理解以及SpringMVC实现Restful编程
- 横坐标为数值型;纵坐标为类目型,且在折线图右侧