js中使用使用原型(prototype)定义方法的好处详解


Posted in Javascript onJuly 04, 2016

经常在前端面试或是和其他同行沟通是,在谈到构造在JS定义构造函数的方法是最好使用原型的方式:将方法定义到构造方法的prototype上,这样的好处是,通过该构造函数生成的实例所拥有的方法都是指向一个函数的索引,这样可以节省内存。

当然,这种说法没有任何问题,只是在实现上,并非只有使用prototype的方式才能达到这样的效果,我们可以将方法以函数的形式定义在构造函数之外,然后在构造函数中通过this.method = method的方式,这样生成的实例的方法也都通过索引指向一个函数,具体如下:

// 不使用原型定义方法:
(function() {
  function Constractor() {
    this.method1 = method1;
    this.method2 = method2;
  }

  function method1() {
  }

  function method2() {
  }
})();

一般使用原型定义时代码如下:

(function () {
  function Constractor() {
  }

  Constactor.prototype = {
    method1: function() {
    },
    method2: function() {
    }
  };
  
  // 或者
  Constactor.prototype.method1 = function() {
  };
  Constactor.prototype.method2 = function() {
  };

})();

理论和实现都没有什么高深的,只是为了达到同样的目的,可以通过不同的途径,只是此种方式在使用instanceOf运算符来判断继承关系时就不奏效了。

以上这篇js中使用使用原型(prototype)定义方法的好处详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用正则表达式 动态创建/增加css style script 兼容IE firefox
Mar 10 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
原生JS实现LOADING效果
Mar 16 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 Javascript
jquery中取消和绑定hover事件的实现代码
Jun 02 Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
JS实现给json数组动态赋值的方法示例
Mar 19 Javascript
es7学习教程之Decorators(修饰器)详解
Jul 21 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
Dec 05 Javascript
深入分析JavaScript 事件循环(Event Loop)
Jun 19 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
Jul 04 #Javascript
浅谈js构造函数的方法与原型prototype
Jul 04 #Javascript
全面了解js中的script标签
Jul 04 #Javascript
jQuery基础_入门必看知识点
Jul 04 #Javascript
把普通对象转换成json格式的对象的简单实例
Jul 04 #Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 #Javascript
js输出数据精确到小数点后n位代码
Jul 02 #Javascript
You might like
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
React实现todolist功能
2020/12/28 Javascript
Python实现身份证号码解析
2015/09/01 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python处理按钮消息的实例详解
2017/07/11 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
python下载库的步骤方法
2019/10/12 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
linux下进程间通信的方式
2014/12/23 面试题
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android