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 获取对象 基本选择与层级
May 31 Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
Mar 28 Javascript
封装了一个js图片轮换效果的函数
Sep 28 Javascript
js函数调用常用方法详解
Dec 03 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
javascript删除元素节点removeChild()用法实例
May 26 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
jQuery 调用WebService 实例讲解
Jun 28 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
微信小程序 动态传参实例详解
Apr 27 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
深入理解vue中的$set
2017/06/01 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
vue自动化表单实例分析
2018/05/06 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
python局部赋值的规则
2013/03/07 Python
使用python统计文件行数示例分享
2014/02/21 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
Python多线程正确用法实例解析
2020/05/30 Python
Python 防止死锁的方法
2020/07/29 Python
介绍一下#error预处理
2015/09/25 面试题
内科护士实习自我鉴定
2013/10/17 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
三严三实对照检查材料
2014/08/25 职场文书
旅游活动总结
2014/08/27 职场文书