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 相关文章推荐
基于jquery的高性能td和input切换并可修改内容实现代码
Jan 09 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
May 12 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
May 13 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
May 17 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
微信小程序入门之广告条实现方法示例
Dec 05 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
Aug 20 Javascript
vue实现图片上传预览功能
Dec 23 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
Python使用turtule画五角星的方法
2015/07/09 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
医学生自荐信
2013/12/03 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
幼教简历自我评价
2014/01/28 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技