javascript中的类方法、构造方法、原型方法的对比
如果你已经接触js很久了,那么应该可以看看我总结的是否正确,如果你刚开始学习,那么通过我的总结,你可以更快的区别他们,记得我刚接触js时,这一块反正是模糊了很久!
1,长相的区别:
function Class(){ //声明一个类
this.constructMethod = function(){}; //添加构造构造方法
};
Class.classcMethod = function(){}; //添加类方法
Class.prototype.protocMethod=function(){};//添加原型方法
2,用法的区别:
Class.classMethod();//类方法直接调用
var instance = new Class();
instance.constructMethod();//构造方法实例才能调用
instance.protoMethod();//原型方法实例才能调用
3,性能上的区别:
A类方法在内存中只会有一份,因为它只属于类本身,在实际中,我们一般不会用到类方法。写出来主要是让你知道它而已。
B构造方法和原型方法都是实例的,但是构造方法会在每一次new Class()时,都在内存中产生一个新的副本。通常这种方法我们用在实例间的不同之处。每个实例的构造方法互不影响。但是显然,它又占据内存了。原型方法就正好相反,它不会随着new Class()时
产生新的副本,它在内存中也只有一份。可以实现实例间的共享。同时也节约了内存。
综上:你在开发时,一般不会用到类方法,将有共性的方法做成原型方法,将有个性的方法做成构造方法。
4,以上谈到的构造方法,在实际项目中用还可以将它转移到实例上,即给实例添加方法,因为通常我们只在类的构造函数里放一些属性成员,而不是方法。见下:
function Class(){};
var instance = new Class();
instance.instanceFn=function(){};//添加实例方法
开心一刻:

javascript中的类方法、构造方法、原型方法的对比的更多相关文章
- JavaScript中的类方法、对象方法、原型方法
类方法:也叫函数方法,在JavaScript中函数也是一个对象,所以可以为函数添加属性以及方法: 对象方法:包括构造函数中的方法以及其原型上面的方法: 原型方法:一般用于对象实例共享,在原型上面添加该 ...
- JavaScript 中的类方法,对象方法,Prototype方法
<script type="text/javascript"> function baseClass() { this.showMsg = function() { a ...
- Javascript中的对象和原型(3)
在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...
- Javascript中的对象和原型(三)(转载)
在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...
- Javascript中的对象和原型(一)(转载)
面向对象的语言(如Java)中有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 要了解面向对象,首 ...
- js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 分析 js构造函数:对象方法 、类方法 、原型方法
构造函数方法有对象方法.类方法.原型方法,这些方法在什么时候可以调用,什么时候不能调用,为什么? function Func(name){ this.name=name; this.ff=functi ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- JavaScript中类似PHP的uniqid()方法
JavaScript中类似PHP的uniqid()方法: function generateUIDNotMoreThan1million() { return ("0000" + ...
- 深入了解JavaScript中的Symbol的使用方法
这篇文章主要介绍了深入了解JavaScript中的Symbol的使用方法,本文针对ES6版本的JS进行讲解,需要的朋友可以参考下 Symbol 是什么? Symbols 不是图标,也不是指在代码中可以 ...
随机推荐
- 【scala】getter和setter
我们在用Java的时候经常把一些字段定义为private类型来完成封装,这样外界就无法访问. 如果外界访问或者修改该字段的时候,只能通过该字段提供的getter和setter方法来实现. 在Scala ...
- iOS Charles Proxy 教程
原文:Charles Proxy Tutorial for iOS 作者:Aaron Douglas 译者:kmyhy 有时不得不承认--我们曾经写过一些代码,它们不正确,但我们又无法调试.更麻烦的是 ...
- 兼容 数组 api map代码
if(!("map" in Array.prototype)) Array.prototype.map=function(fun){ for(var i=0,arr=[]; i&l ...
- Manual Install Cocos2d-x vc template on Windows 7
Manual Installation Process Download the template file from HERE and extract it. Open the file CCApp ...
- virtual box 安装 centos 7 不能上网问题解决总结
http://blog.csdn.net/u013264730/article/details/51146359 1.设置virtualbox 网络选项 [root@centos1 ~]# cat / ...
- (十)js获取日期
//将日期转换成字符串格式输出 function formatDateToString(){ // 先获取对象日期 var oDate = new Date(); // 从该对象中分别拿出所需要的 年 ...
- Net Core网络通信
Net Core网络通信 https://www.cnblogs.com/xxred/p/9859893.html 聊聊如何设计千万级吞吐量的.Net Core网络通信! 作者:大石头 时间:2018 ...
- opencv之图像阈值化处理
一.函数简介 1.threshold-图像简单阈值化处理 函数原型:threshold(src, thresh, maxval, type, dst=None) src:图像矩阵 thresh:阈值 ...
- HWOJ-字符串的逆序
将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 如:输入“I am a student”,输出“tneduts a ma I”. 输入参数: inputString:输入的 ...
- runtime获取对象所有属性(变量)和方法
1.包含运行时头文件 <objc/runtime.h> 2.获取某个类的成员变量或者属性: unsigned int numIvars; //成员变量个数 Ivar *vars = cla ...