JSz中的静态方法和实例方法的分析
我又回来了,最近忙着喝枸杞,没来写博客感觉很有负罪感,今晚我来写一点小小的知识点
可能我们在用形如Array.of()的方法时会产生一些疑问,为什么我们能不实例化直接使用Array上的of()方法呢,其实原理很简单,就是of()方法时Array的静态方法,所以我们才能直接Array.of()来使用
可能我这个表述不是很清楚,没事,下面我们来通过一个栗子来看一下到底是怎么回事
//首先我们来模拟一个Array的构造函数
function newArray(){}
//再给这个构造函数原型对象上添加方法
newArray.prototype.shiyan = function(){
console.log("我是实验函数")
} // 现在我们这样调用的时候
newArray.shiyan();
这木写函数用形如Array.of()调用的时候会报一个错误

这样显然不符合我们想做成Array.of()这种调用方式的要求,别急,我们来试试另一种方法
静态函数:
//首先我们来模拟一个Array的构造函数
function newArray(){} //我们现在不再去给构造函数的原型对象上添加方法
// 而是给构造函数上添加静态方法
newArray.of=function(){
console.log("我是构造函数的静态方法");
} //现在我们再来试试能不能通过类似于Array.of()方法调用
newArray.of();

我们可以看到现在我们能通过形如Array.of()调用到方法了,真的是美滋滋。
好了,今天先就这样吧,大家下次见
JSz中的静态方法和实例方法的分析的更多相关文章
- JQ也要面向对象~在JQ中扩展静态方法和实例方法(jq扩展方法)
JQ也要面向对象,事实上,无论哪种开发语言,在开发功能时,都要把面向对象拿出来,用它的思想去干事,去理解事,面向对象会使问题简单化,清晰化,今天说两个概念“静态方法”与“实现方法”,这个在面向对象的语 ...
- Java中的静态方法和实例方法的调用的理解(不同的类下的方法调用)
public class MethodCall { public static void main(String[] args) { Test.sayStatic(); Test test = new ...
- javascript中静态方法、实例方法、内部方法和原型的一点见解
1.静态方法的定义 var BaseClass = function() {}; // var BaseClass=new Function(); BaseClass.f1 = function(){ ...
- (转)关于python3中staticmethod(静态方法)classmethod(类方法)实例方法的联系和区别
原文:http://dmcoders.com/2017/08/30/pythonclass/ https://zhuanlan.zhihu.com/p/28010894------正确理解Python ...
- Objective-C 关于静态方法与实例方法的转载
objective-c中非常重要的语法知识,在此归纳总结一下. 类方法,也称静态方法,指的是用static关键字修饰的方法.此方法属类本身的方法,不属于类的某一个实例(对象).类方法中不可直接使用实例 ...
- 【Java初探外篇02】——关于静态方法与实例方法
在Java的学习中,我们知道,方法的使用是不可或缺的重要部分,在我们编写第一个Java程序hello world的时候,我们就要开始使用主方法main():它就是一个静态方法(static metho ...
- Objective-C 关于静态方法与实例方法
objective-c中非常重要的语法知识,在此归纳总结一下. 类方法,也称静态方法,指的是用static关键字修饰的方法.此方法属类本身的方法,不属于类的某一个实例(对象).类方法中不可直接使用实例 ...
- java 静态方法和实例方法的区别(转)
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...
- java 静态方法和实例方法的区别
转自 java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法 ...
随机推荐
- Linux - 针对用户账号的常用操作
用户目录 除root用户外,其他默认的用户目录一般为/home/<user name>. 可以通过如下步骤修改默认用户目录 修改/etc/passwd文件中相应用户的路径信息 停止此用户的 ...
- 【liferay】5、使用PortletURL进行跨portlet通信 liferay6.2
[问题] 1.当我们一个页面存在多一个portlet的时候,如在不同的portlet之间传参? [解决办法] 1.在liferay官方有几种方式,比较复杂麻烦,不是太实用,这里不再赘述. 2.通过fr ...
- vue教程2-08 自定义键盘信息、监听数据变化vm.$watch
vue教程2-08 自定义键盘信息 @keydown.up @keydown.enter @keydown.a/b/c.... 自定义键盘信息: Vue.directive('on').keyCode ...
- (转载)es进行聚合操作时提示Fielddata is disabled on text fields by default
原文地址:http://blog.csdn.net/u011403655/article/details/71107415 根据es官网的文档执行 GET /megacorp/employee/_se ...
- Facade外观模式(结构性模式)
1.系统的复杂度 需求:开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎.控制器.车轮等各子系统构成.然后由对应的子系统调用. 常规的设计如下: #region 坦克系统组 ...
- 如果非得了解下git系统... - 实践篇
git的定义是一个内容寻址文件系统.内容.寻址.文件.系统,该来的总会来的… 本文旨在通过实践来介绍.git文件夹中的目录及文件功能,属git基础知识.但在此基础上可解决各git使用过程中可能遇到的问 ...
- 漫画:什么是CAS机制
这篇文章说到重点了:https://www.cnblogs.com/myopensource/p/8177074.html
- Linux下自动清理超过指定大小文件的方法
由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件. ...
- 解压cpio.gz、zip类型文件
aix上的oracle介质文件是10gr2_aix5l64_database.cpio.gz 解压方法: gunzip 10gr2_aix5l64_database.cpio.gz cpio -idm ...
- Python面试题目--汇总
原文链接-https://github.com/taizilongxu/interview_python Python语言特性 1 Python的函数参数传递 2 Python中的元类(metacla ...