严格的来讲,js里面并没有静态与私有的概念,所有成员属性都是公开的,下面只是参考OO语言,通过某种方式来实现类似的概念。
一。静态变量
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= 'net'; 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代码至关重要,特别是在涉及类和对象的复杂逻辑时。在...
静态变量是属于类的变量,而不是类的实例变量。它们是非线程安全的,因此通常与 final 关键字结合使用,以标识公共资源和常量。静态变量可以通过 ClassName.variableName 的方式进行访问。 例如: ```java public ...
Java中的静态变量和静态方法是面向对象编程中的关键概念,它们与实例变量和实例方法有着显著的区别。在Java中,`static`关键字用于声明类级别的成员,而不是对象级别的成员。 **一、静态成员变量与实例成员变量的...
然而,需要注意的是,由于私有静态变量是通过闭包共享的,它们的生命周期与包含它们的IIFE相同,直到页面卸载才会被释放,因此可能会影响内存管理。 了解并熟练掌握JavaScript中的面向对象和私有变量的概念,能够...
Java 语言中的静态变量和静态方法是类级别的成员,它们不属于任何实例,而是直接关联到类本身。在探讨继承和覆盖的问题时,这两者有着不同的行为特性。 首先,让我们来看看静态变量。静态变量(也称为类变量)是...
在JavaScript,特别是Unity3D环境中,静态变量是一种特殊类型的变量,它不属于任何特定的对象实例,而是属于类本身。这意味着所有该类的实例都可以共享这个变量的值,即使没有创建对象,也可以直接通过类名访问。在...
静态方法不能访问非静态变量,因为它们不与特定的对象实例关联。它们只能访问静态变量和其他静态方法。像`Integer.parseInt()`和`Float.parseFloat()`这样的方法就是静态方法,可以直接通过类名调用,而无需创建类的...
在 Java 中有两种类型的变量:实例变量和静态变量。实例变量是在实例创建时被初始化的,而静态变量是在类加载时被初始化的。静态变量可以被所有实例共享,而实例变量每个实例都有自己的副本。 在 Java 中,静态变量...
需要注意的是,使用静态私有变量模式时,由于所有实例共享私有变量,因此当多个实例同时调用特权方法时,可能会引发同步问题。此外,如果作用域链过长,可能会导致内存消耗增加,影响性能。 总的来说,JavaScript的...
静态方法通常用于执行那些不需要访问实例变量或调用实例方法的任务,例如工具函数或者类级别的操作。 #### 作用 1. **资源节约**:静态方法不依赖于任何特定的对象实例,因此不需要创建对象实例即可调用,这有助于...
非静态方法可以访问实例变量和其他非静态方法,也可以访问静态变量和静态方法。 例如,在以下代码中,我们定义了一个名为 `Test` 的类,其中包含一个非静态方法 `test2()`: ```java public class Test { public ...
JavaScript是一种广泛使用的客户端脚本语言,它在网页开发中扮演着至关重要的角色,使得网页不仅限于静态展示,而是可以实现动态交互。书中的内容可能涵盖了以下关键知识点: 1. **基础语法**:包括变量、数据类型...
在这一部分,你将学习JavaScript的基本语法和概念,包括变量声明、数据类型(如字符串、数字、布尔值、数组和对象)、控制结构(如条件语句、循环)以及函数的使用。此外,还会涉及事件处理,这是JavaScript与用户...
JavaScript是一种广泛使用的客户端脚本语言,它在网页开发中扮演着至关重要的角色,使得网页不仅限于静态展示,而是能够实现丰富的用户交互。 本书的核心在于通过实例来教授JavaScript编程技巧,帮助读者理解和掌握...
### JavaScript教程及实例讲解 #### 一、JavaScript简介与历史 JavaScript是一种广泛应用于网页开发中的脚本语言,它最初由Netscape公司在1995年发布,原名为LiveScript。在当时,Netscape公司与Sun Microsystems...
1. 变量与数据类型:JavaScript是一种动态类型语言,这意味着我们无需提前声明变量的类型。变量可以存储不同类型的数据,如字符串、数字、布尔值、null、undefined等。此外,JavaScript还引入了特殊的复杂数据类型...
本资源名为"javascript实例100例",显然是一份包含丰富JavaScript代码示例的集合,旨在帮助开发者深入理解和应用JavaScript的核心概念及功能。下面我们将详细探讨其中可能涉及的知识点。 1. **基础语法**:...
通过《深入学习JavaScript开发与实例》这本书,读者将能够系统地学习JavaScript的各个方面,结合实际案例加深理解,并能运用到实际项目中,提升开发效率和代码质量。对于希望成为专业JavaScript开发者的人来说,这是...