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 相关文章推荐
Javascript 获取LI里的内容
Dec 17 Javascript
jquery对表单操作2
Apr 06 Javascript
jQuery LigerUI 使用教程入门篇
Jan 18 Javascript
javascript读取Xml文件做一个二级联动菜单示例
Mar 17 Javascript
React组件的三种写法总结
Jan 12 Javascript
利用n工具轻松管理Node.js的版本
Apr 21 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
在 React、Vue项目中使用SVG的方法
Feb 09 Javascript
webpack-dev-server自动更新页面方法
Feb 22 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
JS无限级导航菜单实现方法
Jan 05 Javascript
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 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中实现记住密码自动登录的代码
2011/03/02 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
php实现两个数组相加的方法
2015/02/17 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
Python常用知识点汇总
2016/05/08 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python实现网站表单提交和模板
2019/01/15 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
六一节目主持词
2014/04/01 职场文书
安全月活动总结
2014/05/05 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
面试通知短信
2015/04/20 职场文书
单位计划生育责任书
2015/05/09 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL