首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Js如何利用prototype为类创建静态成员属性和方法

前言 为类创建静态成员,是面向对象语言的特点,js是可以通过prototype来实现这一特点 01 具体代码如下所示 // 用function 模拟一个类出来,同时也作为构造函数 function MyClass...() { this.name = "https://coder.itclan.cn"; // 类的成员变量name this.myStaticFun = myStaticFun; //...类的成员函数,把私有函数放到外头,避免重复创建 } // 把私有函数抽离出来 function myStaticFun() { return this.name; } // 为MyClass...,要是还没有,那就会返回undefined 分析 prototype是js为每一个对象内置的隐藏属性,它会随着这个对象一直存在,当构造函数内的私有属性和私有方法与构造器函数原型下的属性和方法同名时 私有属性和方法要优先于共有属性...在上面的示例中,在构造器函数内定义了一个私有属性和方法,但同时也创建定义了共有属性和方法,定义在MyClass上,通过new语句实例化后,对象就有prototype的所有属性

1.9K30

【C++】类与对象—— 初始化列表 、static 静态成员、

类与对象 1 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值,以我们之前实现的Date类对象为例。...2 static 静态成员 有时候类需要一些成员与类本身直接相关,而不是与类的各个对象保持联系。 例如,一个银行账户类对象可能需要一个数据成员来表示当前基准利率。...静态成员变量一定要在类外进行初始化 2.2 声明成员变量 我们通过在成员的声明之前加入关键字 static 就可以创建,和其他成员一样,静态成员也是可以被 public 或 private的。...2.3 使用类的静态成员 使用时我们通过作用域运算符直接访问静态成员。 虽然静态成员不属于类的某个对象,但是我们依然可以使用类的对象、引用、或者指针来访问静态成员。...总结 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明 类静态成员即可用 类名 :: 静态成员 或者 对象.静态成员

39110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++类和对象(5)static修饰的静态成员变量&函数

    1.静态成员函数和静态成员变量的引入 (1)我们通过以下面的这个例子逐步引出静态的成员变量和成员函数: 我们自己定义一个类,使用这个类创建对象,我们应该如何判断在这个程序执行的过程中,创建了多少个对象,...,所以这个时候创建的对象的个数除了前面的a1,a2还有我们现在的匿名对象A(),就是创建了3个对象,但是匿名对象的生命周期就在创建的那一行,所以在执行cout的时候,这个匿名对象的生命周期已经结束了,并不是正在使用的...都是对象的,就是我们创建的任何一个对象都有n和m,现在我们想要这个n和m属于这个类,就要在前面加上static; 这个时候,我们在nm这两个成员变量的前面加上static之后,这两个成员变量就是静态成员变量...,属于整个类了,而不是某一个单独的对象,这个时候我们会发现在等号的位置有报错; 这个就说明静态成员变量就不可以给缺省值了,为什么会这样?...static这样的话函数就成为了静态的成员函数; 静态的成员函数的特点是没有this指针,我们之前的那些普通函数有this指针(就是我们使用A这个类创建一个对象a1,我们使用a1.print()就可以调用这个函数

    9310

    C++面向对象友元,全局函数、类、成员函数做友元

    在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术 友元的目的就是让一个函数或者类 访问另一个类中私有成员 友元的关键字为 ==friend== 友元的三种实现 全局函数做友元...类做友元 成员函数做友元 全局函数做友元 class Building { //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void...,用指针来维护下面在堆区创建的building类,承担着在goodgay类内做一个载体的作用。...,用指针来维护下面在堆区创建的building类,承担着在goodgay类内做一个载体的作用。...告诉编译器 goodGay类是Building类的好朋友,可以访问到Building类中私有内容 可以设置类与类之间的访问权限 成员函数做友元 class Building; class goodGay

    39220

    Java基础语法(十一)类?对象?我能不能写个妹子类给自己造个(一个够吗?)对象?

    文章目录 前言 类 自定义女孩类 女孩的属性 女孩的动作 结语 前言 首先声明,本人并不是什么大佬,也是一个初入IT界的小白,我们一起加油学习!...这次可以学习自定义类和对象的知识了,让我们先去了解什么是对象,什么是类 造妹计划:造一个妹子类,自己定义一个完美的对象! 类 那么什么是类呢?...自定义女孩类 把具有相同特征的一些东西/事物分门别类,我们自己造一个名字 好,我们现在造一个火柴盒妹子类,用比较艺术化的话来说就是:只具其形,不具其神!...class Girl{ } 好了,这就是我们的女孩类,是不是感觉啥都没有,不对不对,Java类中有一个默认的东西,叫做构造方法,构造方法,构造方法,重要的事情说三遍!...,分为成员变量,局部变量和类变量 在我们创建的女孩类中,属性就是女孩们的诸如身材,相貌等的东西,当然,像什么年龄名字的,也是必须有的,不过不同的属性有不同的作用,所以属性也分上面三种 成员变量 在类中

    44220

    C++新旅程:类的构造函数和析构函数

    类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类大小是1,占一个字节class Date//空类{};空类中真的什么都没有吗?...构造函数2.1概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证 每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。...SetDate(),上面只创建了3个对象,而每个对象都需要调用一次SetDate()方法才能完成赋值操作,那如果创建了N个对象呢,岂不是要调用N次的SetDate()方法。...2.2特性构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。...补充知识全局对象和静态全局对象生命周期的对比:静态全局对象和全局对象都在程序开始时创建,并在程序结束时销毁。它们的生命周期实际上是一样长的,都是贯穿整个程序的执行过程。

    5610

    深入理解Java变量

    距今为止,目前已知的变量主要有 实例变量 全局变量 静态变量 类变量 局部变量 成员变量 常量 下面我们就采用各个击破的方式来认识每个概念 # 1.1 实例变量 实例变量又被称为 Instance variables...实例变量只能通过创建对象来使用,当使用 new 关键字进行创建对象时,实例变量同时也被创建,当垃圾回收器回收对象时,实例变量也会被销毁。...每个对象都有自己的一个实例变量的副本,因此在一个对象中修改变量不会对其他对象中的实例变量造成影响 实例变量只能通过创建对象引用来使用。...也就是说,静态变量只有一个,它不会随着对象实例的创建而进行副本拷贝 静态变量可以通过 类名.变量名 进行访问,并且不需要创建任何对象就能访问。...成员变量在 Java 中就是实例变量?这个结论对吗? # 1.7 常量 # 2.

    20020

    【C++类和对象】探索static成员、友元以及内部类

    这样可以确保所有对象都能访问和修改相同的数据,而不需要每个对象都有自己的副本。比如上述计算类创建对象的个数以及正在使用对象的个数; 类级别的数据: 静态成员变量属于整个类而不是类的实例。...这使得在不创建类的实例的情况下也能够访问和修改静态成员变量。 全局作用域: 静态成员变量的作用域是整个类,可以在类的声明和定义之外进行访问和修改。...这使得静态成员变量可以被用于实现类似全局变量的功能,但又能保持在类的命名空间内。 需要注意的是,静态成员变量的生命周期与程序的运行周期相同,它们在程序启动时创建,直到程序结束才被销毁。...在静态成员函数中调用非静态成员函数时,需要提供一个对象来调用该非静态成员函数。 非静态成员函数可以调用类的静态成员函数吗? 非静态成员函数可以调用类的静态成员函数。...静态成员函数是与类本身相关而不是与对象的特定实例相关的,因此可以在非静态成员函数中直接使用类名来调用静态成员函数。

    14210

    【C++入门篇】保姆级教程篇【下】

    静态的成员变量一定要在类外进行初始化。 现在我想实现一个类,来计算调用这个类会创建了多少个对象。...既然我们不能使用普通成员变量,那我们不妨使用全局变量count来对类创建对象进行计数,创建对象在类中无非是调用构造函数与拷贝构造,我们只需要在构造和拷贝构造函数内将count+1就行了。...2、非静态成员函数可以调用类的静态成员函数吗?...其实我们前面也算是解释了第二个问题,我们甚至都能通过类域直接访问到类的静态成员函数,那么类内部的非静态成员函数也是能访问类的静态成员函数(静态成员有全局性)。...其实这是因为静态成员函数、静态成员变量本质上和全局变量没区别,在全局范围内访问类的成员函数是非法的,所以会报错。 总结: 1.

    14610

    【C++】类和对象(完结篇)

    大家想一下,要创建一个类对象,有哪些途径,是不是一定是通过构造函数或者拷贝构造搞出来的。 那我们是不是可以考虑利用构造函数和拷贝构造来计算创建出来的对象个数啊。...但是: 如果直接放到类里面,作为类的一个成员变量: 那它是不是就属于对象了,但我们要统计程序中创建对象的个数,这样我们每次创建一个对象n就会定义一次,是不是不行啊。...不能让它属于每个对象,是不是应该让它属于整个类啊。 2.1 静态成员变量 怎么做呢? 在它前面加一个static修饰,让它成为静态成员变量。...我们自己呢定义这样一个类,两个静态成员变量_i和_sum,分别初始化为0,1。...特性: 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明,静态成员变量一定要在类外进行初始化 类静态成员即可用 类名

    18310

    【C++从小白到大牛】类和对象

    五、类的实例化 用类类型创建对象的过程,称为类的实例化(类和对象的关系) 一个类可以实例化出多个对象,实例化出的对象才占用实际的物理空间,存储类成员变量 Person类是没有空间的,只有Person类实例化出的对象才有具体的年龄...如果对象中包含类的各个成员? 每个对象中成员变量是不同的,但是调用同一份函数,如果按照此种方式存储,当一个类创建多个对象时,每个对象中都会保存一份代码,相同代码保存多次,浪费空间。...但是静态成员变量不是属于某个对象的,是属于整个类的 面试题:实现一个类,计算程序中创建出了多少个类对象。...静态成员也是类的成员,受public、protected、private 访问限定符的限制 总结一下: 静态成员函数和静态成员变量,本质就是受限制的全局变量和全局函数,专属这个类,受类域和访问限定符的限制...问题: 1、静态成员函数能调用非静态成员函数吗? 答:不可以,因为静态成员函数没有this指针,同样也不能访问非静态成员变量 2、非静态成员函数能调用静态成员函数吗?

    8110

    【C++】类和对象核心总结

    4.空类的大小 虽然这个类是空的,但是还可以创建对象不是吗?...4.赋值重载(是默认成员函数)和运算符重载(不是默认成员函数) 4.1 运算符重载(不是默认成员函数,需要自己写) C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型...静态成员变量一定要在类外进行初始化 以上都是C++关于static的硬性规定,先记住,然后我用代码来帮助大家理解。 题目:现在要求你实现一个类来计算出程序中创建出了多少给类对象。...//所以现在有三种静态,全局静态,局部静态,类静态,他们生命周期都是全局的,但作用域是不同的 }; int A::N = 0; //静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明...类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区。

    76330

    使用C# (.NET Core) 实现单体设计模式 (Singleton Pattern)

    实际中有很多种对象我们可能只需要它们的一个实例, 例如: 线程池,缓存, 弹出的对话框, 用于保存设置的类, 用于logging的类, 硬件设备驱动对象等等. 一段对话: A: 如何创建一个对象?...B: MyClass有一个静态方法, 我们可以这样调用静态方法: MyClass.getInstance(); A: 为什么使用MyClass, 而不是某个对象的名?...里面最重要的一部分代码: image.png 如果该实例引用为null, 那么创建一个实例, 并把这个实例赋給类的那个成员变量....那就不如早点把实例给创建出来, 而不是懒创建. 例如: 使用静态的成员引用, 这样类在加载的时候就把实例创建出来了(保证在任何线程访问之前就会创建出来). 3....其他问题 Q: 如果我创建一个类, 里面都是静态方法和静态变量, 那么它的效果和单体模式不是一样的吗? A: 是的, 如果你类没有其他依赖并且初始化并不复杂的话. Q: 可以继承单体模式吗?

    1K40

    那些你不知道的类和对象的知识

    /函数 (1)定义 静态成员变量和静态成员函数是属于类而不是对象的成员。...工具函数:静态成员函数可以作为工具函数,独立于对象的操作,提供一些辅助功能。 静态成员变量和静态成员函数为类提供了与类相关的特性和功能,并且可以在不创建类的实例对象的情况下进行访问和使用。...静态成员函数可以调用非静态成员函数吗? 不可以,静态成员函数不能直接调用非静态成员函数。因为静态成员函数是属于类的,而非静态成员函数是属于对象的。...静态成员函数没有指向具体对象的指针,因此不能访问对象的非静态成员函数和非静态成员变量。如果需要在静态成员函数中调用非静态成员函数,可以先创建一个对象,然后通过对象调用非静态成员函数。...非静态成员函数可以调用类的静态成员函数吗? 可以,非静态成员函数可以调用类的静态成员函数。静态成员函数是与类相关联的函数,而不是与类的任何特定对象相关联的函数。

    20520

    使用 C#.NET Core 实现单体设计模式

    实际中有很多种对象我们可能只需要它们的一个实例, 例如: 线程池,缓存, 弹出的对话框, 用于保存设置的类, 用于logging的类, 硬件设备驱动对象等等. 一段对话: A: 如何创建一个对象?...B: MyClass有一个静态方法, 我们可以这样调用静态方法: MyClass.getInstance(); A: 为什么使用MyClass, 而不是某个对象的名?...如果该实例引用为null, 那么创建一个实例, 并把这个实例赋給类的那个成员变量. 这里要注意, 如果我们永远不需要这个类的实例, 那么这个类永远也不会被实例化, 这叫做懒初始化....那就不如早点把实例给创建出来, 而不是懒创建. 例如: ? 使用静态的成员引用, 这样类在加载的时候就把实例创建出来了(保证在任何线程访问之前就会创建出来). 3....其他问题 Q: 如果我创建一个类, 里面都是静态方法和静态变量, 那么它的效果和单体模式不是一样的吗? A: 是的, 如果你类没有其他依赖并且初始化并不复杂的话. Q: 可以继承单体模式吗?

    66960

    this指针用法

    this指针只能在一个类的成员函数中调用,它表示当前对象的地址。...全局函数,静态函数都不能使用this。 实际上,成员函数默认第一个参数为T* const register this。...回答 #1:this指针是什么时候创建的? this在成员函数的开始执行前构造的,在成员的执行结束后清除。 #2:this指针存放在何处? 堆,栈,全局变量,还是其他?...#5:我们只有获得一个对象后,才能通过对象使用this指针,如果我们知道一个对象this指针的位置可以直接使用吗? this指针只有在成员函数中才有定义。...普通的类函数(不论是成员函数,还是静态函数),都不会创建一个函数表来保存函数指针的。只有虚函数才会被放到函数表中。

    44420

    2023 跟我一起学设计模式:单例模式

    它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此时你会获得之前已创建的对象, 而不是一个新对象。...还记得你 (好吧, 其实是我自己) 用过的那些存储重要对象的全局变量吗? 它们在使用上十分方便, 但同时也非常不安全, 因为任何代码都有可能覆盖掉那些变量的内容, 从而引发程序崩溃。...该函数会 “偷偷” 调用私有构造函数来创建对象, 并将其保存在一个静态成员变量中。 此后所有对于该函数的调用都将返回这一缓存对象。 如果你的代码能够访问单例类, 那它就能调用单例类的静态方法。...该方法可以创建一个新对象, 但如果该对象已经被创建, 则返回已有的对象。 如果你需要更加严格地控制全局变量, 可以使用单例模式。 单例模式与全局变量不同, 它保证类只存在一个实例。...该方法会在首次被调用时创建一个新对象, 并将其存储在静态成员变量中。 此后该方法每次被调用时都返回该实例。 将类的构造函数设为私有。 类的静态方法仍能调用构造函数, 但是其他对象不能调用。

    26840

    C++中this指针的使用方法.

    this指针仅仅能在一个类的成员函数中调用,它表示当前对象的地址。...全局函数,静态函数都不能使用this。 实际上,成员函数默认第一个參数为T* const register this。...回答 #1:this指针是什么时候创建的? this在成员函数的開始运行前构造的,在成员的运行结束后清除。 #2:this指针存放在何处? 堆,栈,全局变量,还是其它?...#5:我们仅仅有获得一个对象后,才干通过对象使用this指针,假设我们知道一个对象this指针的位置能够直接使用吗? this指针仅仅有在成员函数中才有定义。...普通的类函数(不论是成员函数,还是静态函数),都不会创建一个函数表来保存函数指针的。仅仅有虚函数才会被放到函数表中。

    1.2K20

    Java基础问题汇总

    具体如下所示 修饰成员变量和成员方法 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。...静态代码块 静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次。...在静态方法中是没有this关键字的 静态是随着类的加载而加载,this是随着对象的创建而存在。 静态比对象先存在。...Java 为对象内建了各种多态、线程安全等方面的支持,但这不是所有场合的需求,尤其是数据处理重要性日益提高,更加高密度的值类型是非常现实的需求。 3.3、基本数据类型一定存储在栈中吗?...在类中声明的变量是成员变量,也叫全局变量,放在堆中的(因为全局变量不会随着某个方法执行结束而销毁)。

    37810

    【C++】剖析static关键字&&友元

    ~ C语言中主要修饰的对象:局部变量,全局变量,函数~ C++中主要也是修饰的变量和函数,但叫法不同,声明为static的类成员称为类的静态成员,分为两类: 用static修饰的成员变量,称之为静态成员变量...静态成员变量为所有类对象所共享,不属于某个具体的对象,不存在对象中,存放在静态区 用static修饰的成员函数,称之为静态成员函数,静态成员函数没有this指针。...突破类域就可以访问静态成员,可以通过类名::静态成员 或者 对象.静态成员 来访问静态成员变量和静态成员函数。...静态成员变量不能在声明位置给缺省值初始化,因为缺省值是个构造函数初始化列表的,静态成员 变量不属于某个对象,不走构造函数初始化列表。 // 实现⼀个类,计算程序中创建出了多少个类对象?...其中友元函数又包括:全局函数做友元,成员函数做友元~ 友元的特性: 外部友元函数可访问类的私有和保护成员,友元函数仅仅是⼀种声明,他不是类的成员函数。

    7510
    领券