js的实例方法和静态方法分析

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);
}

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

Person.say();
Person.getName(‘Carl‘);

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

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

是不是和第一段代码刚好相反,那么这个地方实际上我们就看出来了,say方法是’.’在类上面的,所以,它实际上是一个静态方法,那么当然是可以直接通过类进行访问的(这里的静态方法都是public的),所以第一段的第一句话是不会抱错的,而getName这个方法实际上是在prototype上面的,只有创建一个实例的情况下,才可以通过实例进行访问。 
所以综上所述,定义在直接用类名(这里就是方法名)’.’一个方法,那么这个实际上创建的是一个静态方法;而用prototype’.’的一个方法,实际上创建的是一个实例方法,实例方法是需要创建实例对象进行访问的,所以,以上就是我想说的,js里面的静态方法和实例方法,同样,静态属性和实例属性也是这个道理。

时间: 2024-10-15 00:42:51

js的实例方法和静态方法分析的相关文章

JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42582213 通过前面5章的学习,我们知道了如何通过JNI函数来访问JVM中的基本数据类型.字符串和数组这些数据类型.下一步我们来学习本地代码如何与JVM中任意对象的属性和方法进行交互.比如本地代码调用Java层某个对象的方法或属性,也就是通常我们所说的来自C/C++层本地函数的callback(回调).这个知识点分2篇文章分别介绍,本篇先介绍方法回调,在第七章中介绍本地代码访问Java

js touch触屏原理分析

之前我们做过许多触屏的特效,那么,今天,我们来分析下js的触屏原理.事实上,大家百度一下js touch基本上可以找到这文章“指尖下的js ——多触式web前端开发之一:对于Touch的处理”,我想这文章许多初学js touch的人都看过. 我们今天以实例来说明吧.在实现触屏中,我们必须采用js的addEventListener,接着加上 touchstart,touchmove,touchend.今天我们的代码里加上了jquery,只不过是用来获取ID及CSS,呵呵,毕竟,JQ大 家都在用.但

python3类方法,实例方法和静态方法

今天简单总结下python的类方法,实例方法,静态方法. python默认都是实例方法,也就是说,只能实例对象才能调用这个方法. 那是不是说类方法也只能被类对象本身来调用呢,当然,不是.类方法既可以被类对象调用,也可以被实例对象调用.你可以这样理解,假设我现在定义的是'dog狗',它有一个类方法'啃骨头',那么对于所有的狗是不是都可以调用啃骨头这个方法,既然这样,我现在创建一个'旺财'实例,它也同样可以去啃骨头,也就是能调用这个类方法. 静态方法你可以理解为参数可以随意设置的方法,类对象和实例对

web前端课程技术总结Node.js 使用方法及相关方法分析

Node.js 使用方法及相关方法分析 首先我们要了解什么是node.js? 官方解释是:node.js是一个基于Chrome v8引擎的javascript 运行环境.Node.js使用了一个事件驱动.非阻塞式 I/O的模型,使其轻量又高效.他是由c++编写的 所以速度很快 简单来说 就是一个js 的运行环境,所以他开发用的语言是js语言 ,通过node去编译你的js文件 node.js 的安装 1)npm i -g 全局(电脑只需安装一次) 2)npm i --save -dev /-D/(

类方法、实例方法和静态方法

类方法.实例方法和静态方法,实质是内存空间不一样,三种方法的创建和调用需要注意,同样的,类属性和实例属性,类对象和实例对象都需要理解,公有属性可以设置为类属性,特有属性可以设置为实例属性,类方法.实例方法和静态方法都放在类对象中,实例对象可直接调用. 1 # coding:utf-8 2 3 class Province(object): 4 country = "中国" # 类属性 5 6 def __init__(self,name): 7 self.name = name 8 9

类的实例方法、静态方法、类方法及静态属性

1.类的方法,按照调用方式可以分为3种,实例方法.静态方法.和类方法 1.1 实例方法   实例方法只能通过实例对象调用,不能通过类进行调用.实例方法再定义时候使用关键字self,self代表实例对象本身. class A(): x=100 def fun(self,y): self.x+=y a=A() a.fun(10) print(a.x) A.fun(10) *****结果****** 110 Traceback (most recent call last): #类调用错误 File

JS中的实例方法、静态方法、实例属性、静态属性

一.静态方法与实例方法的例子: 我们先来看一个例子来看一下JS中的静态方法和实例方法到底是什么? 静态方法: function A(){} A.col='red'  //静态属性 A.sayMeS=function(){ console.log("Hello World S!"); } A.sayMeS();//输出Hello World S! 实例方法: function A(){ this.Color="yellow"  //实例属性 } A.prototype

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

静态方法是可以直接用类名.方法名去调用的,而实例方法是不可以的,他必须要用实例才可以去调用. 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); } 以上的代码,实际上很简单,首先是定义了一个function,js里面像上

jquery插件--ajaxfileupload.js上传文件原理分析

英文注解应该是原作者写的吧~说实话,有些if判断里的东西我也没太弄明白,但是大致思路还是OK的. jQuery.extend({ createUploadIframe: function (id, uri) {//id为当前系统时间字符串,uri是外部传入的json对象的一个参数 //create frame var frameId = 'jUploadFrame' + id; //给iframe添加一个独一无二的id var iframeHtml = '<iframe id="' + f