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 相关文章推荐
js变量作用域及可访问性的探讨
Nov 23 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
JavaScript实战之菜单特效
Aug 16 Javascript
three.js实现围绕某物体旋转
Jan 25 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
JavaScript时间与时间戳的转换操作实例分析
Dec 07 Javascript
extract-text-webpack-plugin用法详解
Feb 14 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
Nov 05 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
Dec 19 Vue.js
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出错界面
2006/10/09 PHP
在PHP中使用XML
2006/10/09 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP分页类集锦
2014/11/18 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
javascript验证身份证号
2015/03/03 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
django加载本地html的方法
2018/05/27 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
python轮询机制控制led实例
2020/05/03 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
10个示例带你掌握python中的元组
2020/11/23 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
绿化先进工作者事迹材料
2014/01/30 职场文书
见习报告怎么写
2014/10/31 职场文书
还款承诺书范本
2015/01/20 职场文书
教师年终个人总结
2015/02/11 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
python中取整数的几种方法
2021/11/07 Python
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏