javascript公有静态成员

公共静态成员
在javascript中并没有特殊语法来表示静态成员。但是可以通过使用构造函数向其添加属性这种方式。

板栗:

//构造函数
var Gadget = function(){};

//静态方法
Gadget.isShiny = function(){
  return ‘you bet‘;
}

//向该原型添加一个普通方法
Gadget.prototype.setPrice = function(price){
  this.price = price;
}

//调用静态方法
console.log( Gadget.isShiny() ); //输出‘you bet‘

//创建一个实例并调用其方法
var iphone = new Gadget();
iphone.setPrice(500);

//试图调用Gadget静态方法
iphone.isShiny(); //报错

以上代码可以看错,试图以一个实例方法调用构造函数的静态方法会报错,所以我们需要做一些改动,代码如下:

//构造函数
var Gadget = function(price){
  this.price = price;
};

//静态方法
Gadget.isShiny = function(){

  var msg = ‘you bet‘;
  //只有实例才会执行
  if( this instanceof Gadget ){
    msg += ‘, it costs $‘ + this.price + ‘!‘;
  }
  return msg;
}

//向该原型添加一个普通方法
Gadget.prototype.isShiny = function(){
  return Gadget.isShiny.call(this);
}

//静态方法调用
console.log( Gadget.isShiny() ); //输出:‘you bet‘

//测试实例,非静态调用
var a = new Gadget(499.99);
console.log( a.isShiny() ); //输出:‘you bet, it costs $499.99!‘

javascript公有静态成员

时间: 2024-08-30 17:37:47

javascript公有静态成员的相关文章

关于javascript中静态成员和实例成员的详细解释

关于javascript中静态成员和实例成员的详细解释  在我们了解什么是静态成员和实例成员之前,我们首先来了解一下什么是实例? 实例就是由构造函数创建出来的对象. 例如案例中 p 就是实例: function Person() {}//  此函数为构造函数 var p=new Person();  // p为构造函数创建出来的对象 我们在讨论静态成员和实例成员时候,把函数当成构造函数, 把创建出来的对象称之为实例.在此明白了什么是实例,下面我们就可以说什么是静态  成员和实例成员了. 首先什么

javascript私有静态成员

就私有静态成员而言,指的是成员具有如下属性:1.以同一个构造函数创建的所有对象共享该成员.2.构造函数外部不可访问该成员. //构造函数 var Gadget = (function(){ //静态变量/属性 var counter = 0, NewGadGet; NewGadget = function(){ counter++; } NewGadget.prototype.getLastId = function(){ return counter; } return NewGadget;

JavaScript基础对象创建模式之静态成员(027)

在支持“类”的面向对象语言中,静态成员指的是那些所有实例对象共有的类成员.静态成员实际是是“类”的成员,而非“对象”的成员.所以如果 MathUtils类中有个叫 max()的静态成员方法,那么调用这个方法的方式应该是这样的:MathUtils.max(3, 5). 1. 公有静态成员 JavaScript里并没有“类”的实际语言表示 ,所以也就没有静态成员的语义表示.但由于构造函数本身就是个对象,如果把构造函数看成“类”,那么它的成员就是可以通过“类”名(也就是构造函数)直接访问的“静态成员”

JavaScript 面向对象程序设计(下)——继承与多态 【转】

JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论一下面向对象程序设计中的另外两个要素:继承与多态. 1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系. 1.1 定义和赋值 变量定义是指用 var a;

第26课 类的静态成员函数

1. 静态成员函数 (1)静态成员函数是类中特殊的成员函数,属于整个类所有 (2)可以通过类名直接访问公有静态成员函数 (3)可以通过对象名访问公有静态成员函数 (4)静态成员函数的定义:直接通过static关键字修饰成员函数 [编程实验]静态成员函数示例 #include <stdio.h> class Test { private: int i; static int s_j; public: int getI(); static void StaticFunc(const char* s

第25课 类的静态成员变量

1. 成员变量的回顾 (1)通过对象名能够访问public成员变量 (2)每个对象的成员变量都是专属的 (3)成员变量不能在对象之间共享 2. 静态成员变量 (1)C++中的静态成员变量 ①静态成员变量属于整个类所有 ②静态成员函变量的生命期不依赖于任何对象 ③可以通过对象名,也可以通过类名直接访问公有静态成员变量 ④所有对象共享类的静态成员变量 (2)静态成员变量的特性 ①在定义时直接通过static关键字修饰 ②静态成员变量在程序内部位于全局数据区,所以需要类外为其单独分配空间.(因为new

C++面向对象学习-类的静态成员

1 静态数据成员 2 1,sizeof 运算符不会计算静态成员. 3 4 2,对静态成员数据初始化的顺序为它们在类体外声明的顺序. 5 6 3,静态数据成员被类的所有对象所共享,包括该类的派生类对象. 7 8 4,静态成员数据也可以分为公有的.私有的和受保护的静态成员. 9 对公有静态成员,即可以通过类的对象进行访问,也可以通过类名直接访问. 10 私有的和保护的静态成员数据则只能被该类的公有成员函数访问. 11 12 5,在创建任何对象之前,类的静态成员数据已经存在并可以引用. 13 14 6

C++:静态成员

3.7.1 静态数据成员对象是类的一个实例,每个对象都具有自己的数据成员.例如,学生类张三或李四都具有自己的学号,姓名和平均成绩.在实际使用时,常常还需要一些其他的数据项,比如学生人数.总成绩.平均成绩.但是如果把这些数据项作为普通的数据成员来处理,将会产生错误.下面通过例子来说明: 例3.28 静态数据成员的引例 #include<iostream> #include<string> using namespace std; class Student{ public: Stud

一段代码详解JavaScript面向对象

不解释 (function(){ //私有静态成员 var user = ""; //私有静态方法 function privateStaticMethod(){ } Box = function(value){ //私有成员 privateStaticUser = value; //这个是私有方法 function privateMethod(){ } //公有方法,因为能访问私有成员,也可以说是特权函数 this.getUser = function(){ return user;