静态方法实例方法

js里面的实例方法和静态方法

转自:http://blog.csdn.net/oryjk/article/details/46901035

静态方法是可以直接用类名.方法名去调用的,而实例方法是不可以的,他必须要用实例才可以去调用,

var Person=function(){};
Person.say=function(){
    console.log(‘I am a Person,I can say.‘)
};
Person.prototype.getName=function(name){
    console.log(‘My name is ‘+name);
}
  • 1
  • 2
  • 3
  • 4
  • 5

以上的代码,实际上很简单,首先是定义了一个function,js里面像上面那样定义一个function实际上是定义了一个类,接下来,我给你这个类添加了一个say的方法,然后接着给这个类的prototype添加了一个getName的方法,所有的类都是会有一个prototype这样的属性,这个属性指向的是object,这个是属于js原型链的问题,在这里我就不阐述了。好了,我现在来按照以下调用一下:

Person.say();
Person.getName(‘Carl‘);
  • 1
  • 2

是不是发现,第一个可以正常运行,第二个会报错,再来看看下面的代码:

var carl=new Person;
carl.say();
carl.getName(‘Carl‘);

是不是和第一段代码刚好相反,那么这个地方实际上我们就看出来了,say方法是’.’在类上面的,所以,它实际上是一个静态方法,那么当然是可以直接通过类进行访问的(这里的静态方法都是public的),所以第一段的第一句话是不会抱错的,而getName这个方法实际上是在prototype上面的,只有创建一个实例的情况下,才可以通过实例进行访问。

所以综上所述,定义在直接用类名(这里就是方法名)’.’一个方法,那么这个实际上创建的是一个静态方法;而用prototype’.’的一个方法,实际上创建的是一个实例方法,实例方法是需要创建实例对象进行访问的,同样,静态属性和实例属性也是这个道理。

时间: 2024-10-07 18:48:13

静态方法实例方法的相关文章

JavaScript this特性,静态方法 和实例方法,prototype

<script type="text/javascript"> function logs(str) { document.write(str + "<br />") } //利用“this 指向函数调用者”的特性,可以实现链式调用.jQuery 中大部分都是链式调用 var oName = { name: "aa", age: 999 }; window.name = "I am window"; f

2017-4-16 多态 构造函数 方法重载 静态方法和静态成员

1. 虚方法:virtual 重写:override 2.抽象类:abstract 出来就是当亲爹的,不能被实例化 方法被重写的时候需要override,抽象方法一定在抽象类中,但抽象类中不一定只有抽象方法, 如果要调用抽象类中的普通方法,需要子类继承后在实例化中调用 格式:public  abstract  class Eat(){ //抽象类 public abstract  string eat(): //抽象方法不能有函数体 } 继承的时候:public  class Man:Eat{

类方法和实例方法的调用 super this 访问控制符

一.类方法和实例方法的调用 先看一道选择题:下列哪种说法是正确的( ) A. 实例方法可直接调用超类的实例方法 B. 实例方法可直接调用超类的类方法 C. 实例方法可直接调用其他类的实例方法 D. 实例方法可直接调用本类的类方法 先复习一下,类方法(static方法)在类方法中,不能引用实例变量不能使用super.this关键字不能调用类方法 不考虑访问修饰符的话,实例方法可以通过super.方法名,对象名.方法名调用父类的实例方法实例方法可以通过类名.方法名,super.方法名调用父类的静态方

从零开始,DIY一个jQuery(2)

在上篇文章我们简单实现了一个 jQuery 的基础结构,不过为了顺应潮流,这次咱把它改为模块化的写法,此举得以有效提升项目的可维护性,因此在后续也将以模块化形式进行持续开发. 模块化开发和编译需要用上 ES6 和 rollup,具体原因和使用方法请参照我之前的<冗余代码都走开——前端模块打包利器 Rollup.js 入门>一文. 本期代码均挂在我的github上,有需要的童鞋自行下载. 1. 基本配置 为了让 rollup 得以静态解析模块,从而减少可能存在的冗余代码,我们得用上 ES6 的解

java面向对象基础

思想 面向过程:是分析出解决问题所需的步骤,从上往下步步求精,自顶向下的编程,最重要的是模块化思想,考虑实际的实现 优点:性能高 面向对象:以事物为中心,将事物高度抽象为对象,对象包括属性与行为. 优点:易重用.易扩展.易维护.适合大型项目 联系与区别 联系:面向对象也含有面向过程的思想 区别:面向过程是一件事"该怎么做",面向对象是一件事"该让谁来做" 举例 汽车发动  汽车到站 面向过程  汽车发动与汽车到站分别为两个事件,形成两个函数,依次调用 面向对象  关

java的super和this关键字用法总结

------super关键字------ super用途:在子类中访问超类“被隐藏的成员变量(无论是否静态)和静态方法”以及“被重写的实例方法”.这里的超类必须是“直接超类”,即子类之上最近的超类.        super的用法:        ①在子类构造方法中调用超类的构造方法,用“super(ParamList)”的方式调用,ParamList根据超类构造方法而定,可以为空.另外super(ParamList)必须是子类构造方法的第一句.        ②当超类的成员变量因与子类的成员变

20151015----知识整理

package com.Hanqi; public class t20151015s { public static void main(String[] args) { // TODO Auto-generated method stub telephone tp = new telephone("三星","1345686531"); System.out.println("我的手机品牌是: "+tp.getPinpai()+" ,号

java多线程编程

一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂.在多线程访问共享数据的时候,这部分代码需要特别的注意.线程之间的交互往往非常复杂.不正确的线程同步产生的错误非常难以被发现,并且重现以修复. 2)上下文切换的开销当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指

C# 静态成员和方法的学习小结

数据成员:数据成员可以分静态变量.实例变量两种.静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问. 实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在. 函数成员:方法可以主要分为静态方法,实例方法 静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变 量做为参数传给静态方法.