JSz中的静态方法和实例方法的分析

Wesley13
• 阅读 313

  我又回来了,最近忙着喝枸杞,没来写博客感觉很有负罪感,今晚我来写一点小小的知识点

  可能我们在用形如Array.of()的方法时会产生一些疑问,为什么我们能不实例化直接使用Array上的of()方法呢,其实原理很简单,就是of()方法时Array的静态方法,所以我们才能直接Array.of()来使用

可能我这个表述不是很清楚,没事,下面我们来通过一个栗子来看一下到底是怎么回事

//首先我们来模拟一个Array的构造函数
function newArray(){}
//再给这个构造函数原型对象上添加方法
newArray.prototype.shiyan = function(){
    console.log("我是实验函数")
}

// 现在我们这样调用的时候
newArray.shiyan();

这木写函数用形如Array.of()调用的时候会报一个错误

JSz中的静态方法和实例方法的分析

这样显然不符合我们想做成Array.of()这种调用方式的要求,别急,我们来试试另一种方法

静态函数:

//首先我们来模拟一个Array的构造函数
function newArray(){}

//我们现在不再去给构造函数的原型对象上添加方法
// 而是给构造函数上添加静态方法
newArray.of=function(){
    console.log("我是构造函数的静态方法");
}

//现在我们再来试试能不能通过类似于Array.of()方法调用
newArray.of();

JSz中的静态方法和实例方法的分析

我们可以看到现在我们能通过形如Array.of()调用到方法了,真的是美滋滋。

好了,今天先就这样吧,大家下次见

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java中static关键字的使用
知识点:java中,static关键字修饰类的变量、方法、代码块、内部类场景:我们在创建类的方法和变量时,如果这个类在创建多个对象时,共用同一个属性或者方法,就可以使用static关键字修饰,因为static修饰的变量,在内存的静态域存在的值,被类的多个实例所共用,实际上我们在编写一个类时,就是在描述对象的属性和行为,并没有产生实质上的对
Wesley13 Wesley13
2年前
java中static的作用详解
java中static关键字表示静态的意思,主要用于以下三点,static成员变量,static成员方法和static块。在类中如果定义了static类型的对象(变量或者方法),在java虚拟机(JVM)加载类时,该对象就会被实例化,在使用的时候就不需要再去实例化,直接调用就可以了。常与private,public搭配使用。下面详细说一下这三部分。1
Wesley13 Wesley13
2年前
java频繁new对象的优化方案
在实际开发中,某些情况下,我们可能需要频繁去创建一些对象(new),下面介绍一种,我从书上看到的,可以提高效率的方法。首先,对于将会频繁创建的对象,我们要让这个类实现Cloneable接口,因为这个优化的核心,就是利用clone。clone的最大特点就是,不会去调用任何构造方法,所以,在我看来重点应该放在构造方法中。1.先写一个实体类:在此实
Easter79 Easter79
2年前
Spring使用静态工厂方法创建Bean
1\.使用静态工厂方法创建Bean    使用静态工厂方法创建Bean实例时,class属性也必须指定,但此时class属性并不是指定Bean实例的实现类,而是静态工厂类。因为Spring需要知道是用哪个工厂来创建Bean实例。另外,还需要使用factorymethod来指定静态工厂方法名,Spring将调用静态工厂方法(可能包含一组参数),
Stella981 Stella981
2年前
Kotlin中类似java的静态方法
在java中,我们在写一些静态方法时会这样写:publicclassUtils{publicstaticStringgetName(){return"yiifox";}}在Kotlin中没有静态方法一说,网上大多说使用伴生对象来模拟静态方法,其实这种
Stella981 Stella981
2年前
IBatis Mapper&Spring Data JPA实现原理
   因为我们最近的一个项目数据库访问呢层使用Ibatis, 今天团队成员问Ibatis中只写接口,不写实现,Ibatis是如何帮助我们查询数据。其实原理很简单,就是Java的反射和代理,因为Java的代理是真对于接口的。所以我们就可以在开发中DAO模块就直接写接口和对用的SQL就可以。实现类由我们生成代理,当代理方法被调用的时候我们就使用通用的数据库
Wesley13 Wesley13
2年前
MySql实现Oracle的decode方法
在Oracle中使用decode方法可以轻松实现代码和值之间的转换,但是在MySQL中该如何实现类似功能呢?MySQL中没有直接的方法可以使用,但是我们可以通过下面两种方法来实现:1.casewhenthen如:Selecttitle,caseEmergencywhen1then'紧急' else'普通'End as e
Wesley13 Wesley13
2年前
Java日期时间API系列30
  实际使用中,经常需要使用不同精确度的Date,比如保留到天2020042300:00:00,保留到小时,保留到分钟,保留到秒等,常见的方法是通过格式化到指定精确度(比如:yyyyMMdd),然后再解析为Date。Java8中可以用更多的方法来实现这个需求,下面使用三种方法:使用Format方法、 使用Of方法和使用With方法,性能对比,使用
Wesley13 Wesley13
2年前
Java方法调用的字节码指令学习
Java1.8环境下,我们在编写程序时会进行各种方法调用,虚拟机在执行这些调用的时候会用到不同的字节码指令,共有如下五种:1.invokespecial:调用私有实例方法;2.invokestatic:调用静态方法;3.invokevirtual:调用实例方法;4.invokeinterface:调用接口方法;5.invoke
Wesley13 Wesley13
2年前
Java8——方法引用
方法引用就是通过类名或方法名引用已经存在的方法来简化lambda表达式。那么什么时候需要用方法引用呢?如果lamdba体中的内容已经有方法实现了,我们就可以使用方法引用。一、方法引用的三种语法格式1\.对象::实例方法名lamdba写法:@Testvoidtest1(){