在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

最新文章

  1. C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
  2. UNITY3D在线更新之道-CSlight 使用总结
  3. modelsim(1) - 安装和使用 心得
  4. Coredata 的deletedObjects 方法的使用 附带终止程序的函数
  5. ios开发分类--NSDate+Helpers
  6. IOS 通知 alarm 记录
  7. JSON 省市数据包括港澳
  8. SQL Server 2008R2 数据库出现“可疑”导致无法访问
  9. 【转】来自GDXB大大大大的小总结
  10. JavaScript高级程序设计---学习笔记(五)
  11. SpringBoot初步
  12. SQL Server错误严重性级别和异常处理
  13. Linux源码-等待队列注释
  14. 金蝶k3wise 核算项目、辅助资料
  15. 【JavaScript】 使用extend继承对象的prototype方法
  16. spring注解:反射与配置
  17. PlayFramework 一步一步来 之 页面模板引擎
  18. 【项目 · Wonderland】会议一 · 可达鸭
  19. 使用 boot-repair 对 Windows + Ubuntu 双系统引导修复
  20. antd-mobile使用报错

热门文章

  1. php提前输出响应及注意问题
  2. C++两种字符串传参构造函数
  3. ROS创建工作空间
  4. ubuntu上安装nodejs
  5. 触摸控(触摸与移动 Touch & Mobility)的官方教程
  6. Gridview中Datakeys 通过主键取得各列的值。
  7. NodeJS入门学习
  8. python中模块的引用
  9. c#将DataTable内容导出为CSV文件
  10. 转载:Java就业企业面试问题-电商项目