`
wezly
  • 浏览: 490462 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JavaScript类的静态成员

阅读更多
<!--广告_1 468X60-->

JavaScript静态成员的定义,只需要在类的构造函数之外,使用类的名称(即:构造函数的函数名称)来定义,如:

function MyClass(){}

MyClass.staticMethod = staticMethod;

function staticMethod(){}

JavaScript的静态成员变量的定义类似,如:

MyClass.STATIC_VAR = "SHIRDRN";

下面通过编写一个实例来说明,如下所示:

<script language="JavaScript" type="text/javascript">

function MyRect(w,h,id){
// 成员变量
this.id = id
this.rWidth = w;
this.rHeight = h;
// 成员方法
this.setId = setId;
this.setWidth = setWidth;
this.setHeight = setHeight;
this.newMyRect = newMyRect; // 获取一个MyRect对象实例的方法
this.getArea = getArea;
this.getPerimeter = getPerimeter;
}
MyRect.DEVELOP_OWNER = "SHIRDRN"; // 静态成员常量
MyRect.VERSION = "V 1.25";
MyRect.getVersion = getVersion; // 静态方法

function getVersion(){ // 静态方法的实现,获取版本号
return MyRect.VERSION;
}

function newMyRect(){ // 成员方法的实现,返回一个MyRect类的对象实例,可以通过修改默认值进行设置
return new MyRect("",0,0);
}
function setId(id){
this.id = id;
}
function setWidth(w){
this.rWidth = w;
}
function setHeight(h){
this.rHeight = h;
}

function getArea(){
var area = this.rWidth * this.rHeight;
return area;
}
function getPerimeter(){
var perimeter = 2*this.rWidth + 2*this.rHeight;
return perimeter;
}

</script>

访问静态成员变量的数据和调用静态成员方法,直接使用类名访问,如下所示:

alert(MyRect.getVersion()); // 调用静态方法
alert(MyRect.VERSION);
alert(MyRect.DEVELOP_OWNER);

静态成员变量(常量),不能对其值进行修改。但是,可以通过非静态的成员方法来修改对象实例的数据如下所示:

var myRectInstance = new MyRect("QQ10000",2008,800);
alert("Original value of id : " + myRectInstance.id);
alert("Original value of rWidth : " + myRectInstance.rWidth);
alert("Original value of rHeight : " + myRectInstance.rHeight);
myRectInstance.id = "QQ187071722"; // 直接通过访问成员变量进行修改
myRectInstance.rWidth = 1983;
myRectInstance.rHeight = 119;
alert("After modified,id : " + myRectInstance.id);
alert("After modified,rWidth : " +myRectInstance.rWidth);
alert("After modified,rHeight : " +myRectInstance.rHeight);

当然,可以使用我们定义的成员方法来修改,如下:

myRectInstance.setId("QQ187071722");
myRectInstance.setWidth(1983);
myRectInstance.setHeight(119);

与上面中间部分的代码功能是一样的。这样使用所谓的存取器(Setter和Getter)是不必要的,直接修改成员变量即可。

再看一下,我们定义了一个newRect()方法,它返回一个默认的对象实例:

function newMyRect(){ // 成员方法的实现,返回一个MyRect类的对象实例,可以通过修改默认值进行设置
return new MyRect("",0,0);
}

也可以使用上面的修改方式对其成员变量的数据进行设置。

<!--内容正文-->
分享到:
评论

相关推荐

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

    Javascript类定义语法,私有成员、受保护成员、静态成员等介绍

    为了弥补这一不足,JavaScript允许我们使用类的语法糖,以支持类定义和模拟面向对象编程语言中的成员访问控制,包括私有成员、受保护成员和静态成员。 在JavaScript中,类的定义往往基于构造函数或者使用ES6引入的...

    Javascript 类与静态类的实现

    在JavaScript中,面向对象编程虽然没有像其他强类型语言那样直接的支持,但是通过一些技巧和模式,我们可以模拟实现类和静态类的概念。本文将详细介绍如何在JavaScript中实现类和静态类。 首先,让我们深入理解...

    JavaScript面向对象之静态与非静态类

    在JavaScript中,我们可以通过构造函数和原型来创建类,而类的成员可以分为静态成员和非静态成员。 静态类和非静态类的概念主要来源于静态类型的语言,如Java或C#。在JavaScript中,我们没有严格意义上的静态类,但...

    TypeScript 类详解:属性、修饰符、继承、抽象类与静态成员应用技巧

    最后介绍了一种类中相对特殊但极其有用的概念叫作静态成员,它们不属于任意对象而是属于整个类本身,可用于存储共享状态或者提供全局级别的行为方法。 适用人群:适用于有一定 JavaScript 和 OOP 基础并对TypeScript...

    由浅到深了解JavaScript类

    JavaScript 类还支持静态属性,这些属性不是属于类的实例,而是属于类本身。静态属性可以被所有类的实例共享,而不是每个实例都有自己独立的副本。例如,`WuYouUser`类可能有一个静态属性`totalUsers`,表示注册的...

    Javascript 构造函数,公有,私有特权和静态成员定义方法

    本文将详细解释JavaScript中构造函数中公有、私有特权成员以及静态成员的定义和使用方法。 构造函数中的成员可以被分为公有成员和私有成员。公有成员指的是那些可以被对象外部访问的属性和方法,而私有成员则是只能...

    Javascript 类与静态类的实现(续)

    静态类在JavaScript中的实现通常依赖于闭包,因为JavaScript没有内置的静态成员支持。闭包允许我们在函数内部创建私有变量和方法,同时提供公共接口访问它们。下面我们将深入探讨静态类的实现及其工作原理。 首先,...

    由浅到深了解JavaScript类.doc

    总的来说,JavaScript的类机制提供了面向对象编程的能力,包括属性、方法、实例化和静态属性。通过类,开发者可以更好地组织代码,实现复杂的功能,并模拟现实世界中的各种对象和行为。理解和掌握JavaScript类的概念...

    (js)静态与非静态方法

    在JavaScript中,静态方法与非静态方法是面向对象编程中的两个基本概念,它们在类的定义和实例化过程中扮演着重要角色。理解这两者之间的区别对于编写高效、可维护的代码至关重要。 ### 静态方法 #### 定义 静态...

    JavaScript中的公有、私有、特权和静态成员用法分析

    总的来说,JavaScript中的公有、私有、特权和静态成员用法为开发者提供了灵活的工具,以根据需要设计和实现类的行为和结构。了解和掌握这些概念对于编写可维护和高效的JavaScript代码至关重要。对于初学者来说,通过...

    从Java嵌套类中访问外部类成员.doc

    非静态嵌套类可以访问外部类的所有成员,包括私有成员,而静态嵌套类只能访问外部类的静态成员。这是因为非静态嵌套类持有一个隐含的对外部类实例的引用,而静态嵌套类没有这种引用。 在文档的示例中,存在多层嵌套...

    JavaScript 面向对象的 私有成员和公开成员

    在JavaScript中,静态成员通常是指那些绑定到类本身而非类的实例上的属性和方法。实际上,JavaScript中并没有严格意义上的静态类,但可以通过函数或对象字面量来模拟实现。静态成员通常通过函数直接访问,而非通过...

    关于javascript的“静态类

    JavaScript中的“静态类”或“伪静态类”概念源自面向对象编程中的静态成员。在其他像Java或C#这样的语言中,类可以包含静态方法和属性,这些成员属于类本身而不是类的实例,因此可以直接通过类名调用,无需创建对象...

    javascript中的类理解

    JavaScript 中的类并没有像 Java 或 C# 那样的严格访问修饰符,但可以通过约定俗成的方式来模拟私有属性和方法,例如使用下划线前缀 `_`(如 `_privateVar`)表示非公开成员。 8. **静态方法和属性** 类还可以...

    JSHint javascript静态检查工具,notepad++插件

    它可以根据开发者自定义的配置选项,对代码风格和最佳实践进行检查,确保团队成员遵循统一的编码标准。 在Notepad++中集成JSHint,可以极大地提升开发效率。Notepad++是一款流行的免费源代码编辑器,支持多种编程...

    无类语言的OOP(JavaScript描述)

    实例`anOnLight`可以通过`constructor`属性访问这些静态成员。 #### 二、进阶技术 ##### 单继承 JavaScript中的继承主要是通过原型链来实现的。单继承可以通过将一个构造函数的原型设置为另一个构造函数的实例来...

    javascript面向对象特性代码实例

    首先,我们来了解几个核心概念:类、静态成员、对象和重载。 类在面向对象编程中扮演着基础的角色,它是构造对象的模板或蓝图。在JavaScript中,类可以通过函数和原型链来实现。文章中给出了两种基本的类的使用方法...

Global site tag (gtag.js) - Google Analytics