在JavaScript中,我们经常要给已定义的对象添加一些方法,如下:
   function circle(w,h){
     this.width=w;
     this.height=h;
   }
   var cir = new circle(8,9);
   这时我们突然要计算cir对象的面积,怎么办呢?我们可以专门为这个对象新定义一个计算面积的方法。
   function area(){
      return this.width*this.height;
   }
   cir.area=area;
这时就可以调用cir.area()来计算面积了。
当然上面的语句也可以这样写:
   cir.area=function area(){
      return this.width*this.height;
   }
两种写法效果一样。
有时候我们需要每个对象都有area()方法,那应该怎么做呢?
这时代码如下:
   function area(){
      return this.width*this.height;
   }
   function circle(w,h){
      this.width=w;
      this.height=h;
      this.area=area;
   }
这样每个circle定义的对象就会有area()方法了。
   这样定义并不是一个最好的方式,因为这样定义会使每个对象里都area()方法,如果你定义的对象很多时,就会多占相当一部分内存。应该怎么做呢?
   在JavaScript中,定义一个对象时都会继承一个原始对象,我们可以通过给原始对象添加area()方法而不必让每个circle对象都有area()方法。我们用prototype属性来实现。如下:
   function area(){

      return this.width*this.height;
   }
   function circle(w,h){
      this.width=w;
      this.height=h;
   }
   ///使用prototype之前必须定义一个对象,这里我们定义了一个匿名对象///
   new circle()
   circle.prototype.area=area;
这样实现就不让circle对象多占内存了。
定义方法是这样,定义属性变量也是一样的道理。
  
转载:http://blog.sina.com.cn/s/blog_49cc672f010007ca.html

JavaScript中给对象添加方法的更多相关文章

  1. JavaScript中判断对象类型方法大全1

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  2. JavaScript中判断对象类型方法大全2

    在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String:复杂数据类型是Object,Object ...

  3. JavaScript中通过原型添加方法,解决数据共享问题,节省内存空间

    涉及知识点:(1)原型的引入(2)构造函数.原型对象和实例对象之间的关系(3)__proto__和prototype的理解 直接举例:在自定义构造函数创建对象时,因为创建的对象使用的不是同一个方法,所 ...

  4. JavaScript中Math对象的方法介绍

    1.比较最值方法 比较最值有两种方法,max() 和 min() 方法. 1.1 max() 方法,比较一组数值中的最大值,返回最大值. var maxnum = Math.max(12,6,43,5 ...

  5. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  6. JavaScript中textRange对象使用方法总结

    TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本.文本范围让您可以选择性的将字符.单词和句子从文档中挑选出来.TextRange对象 ...

  7. JavaScript中给对象添加函数的方式

    1. function 类名(){ this.属性: } var 对象名=new 类名(): function 函数名(){ //执行代码 } 对象名.属性名=函数名: 对象名.属性名(): func ...

  8. JavaScript中判断对象类型的种种方法

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  9. 转 JavaScript中判断对象类型的种种方法

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

随机推荐

  1. 中文乱码之myEclipse项目导入时中文乱码(待)

    方法1:检查默认的编码是否设置成utf-8. 步骤如图: window——>preferences... 若Text file encoding 中的编码为 Other == UTF-8 ,则已 ...

  2. 批处理之IPC连接工具

    由于自己需要重复一些工作,闲来没事发个搞个批处理玩玩. 功能介绍:建立IPC连接,IPC磁盘映射,断开IPC连接等 @echo off color 0A echo Welcome!!! echo 本机 ...

  3. DanceLink

    DanceLink是一个可以解决精确覆盖和重复覆盖的搜索算法 重复覆盖就是在精确覆盖的remove等处做改变 都是十字循环链表 精确覆盖 给出一个01矩阵 要求选择几行 使每一列都有且仅有一个1 在求 ...

  4. 转 Nova: 虚机的块设备总结 [Nova Instance Block Device]

    和物理机一样,虚拟机包括几个重要的部分:CPU.内存.磁盘设备.网络设备等.本文将简要总结虚机磁盘设备有关知识. 1. Nova boot CLI 中有关虚机块设备的几个参数 nova boot CL ...

  5. scheduler configuration options

    Table 4.53. Description of scheduler configuration options Configuration option = Default value Desc ...

  6. 命令行下载Baiduyun files

    源码 步骤1:先拿到一个插件插件地址1,插件地址2 步骤2:解压并保存 下载的文件中,包含了一个Baidu-PCS的文件夹.然后打开我们的资源管理器.将Baidu-PCS随意移动到一个文件目录下,但文 ...

  7. http://www.cnblogs.com/jscode/archive/2012/09/03/2669299.html

    http://www.cnblogs.com/jscode/archive/2012/09/03/2669299.html

  8. npm package管理

    每个项目都包含一个package.json文件用来管理项目依赖的包以及项目相关信息. 其中比较总要的就是dependencies和devDependencies两项,分别指定了项目运行所依赖的模块.项 ...

  9. js 读取json数据 挖坑

    一般遇到后台给的json数据格式不对 比如key和value都是单引号. 但真正的json 的key和value都是双引号,必须双引号才能取值. 再来一个例子看看 var test = [{ &quo ...

  10. hdu-3068-最长回文(manacher算法模板)

    题目链接 /* Name:hdu-3068-最长回文 Copyright: Author: Date: 2018/4/24 16:12:45 Description: manacher算法模板 */ ...