在Javascript程序设计中,时常会用到或新增自己编写的各类函数,随着此类小函数的数量的增加,管理上会比较繁重,如果把基本功能分类封装到各种既有对象或自定义类中去,如Object,Math,String,Number等等,使用的时候会非常的方便,并且更容易理解和管理。

现在已经实现的扩展有Math简单数学函数、模拟实现C++的CPoint的JsPoint类、模拟实现C++的CRect的JsRect矩形类、模拟实现C++的CRgn的JsRange类、对于线条的实现JsLine类等,将会陆续贴出。

下面是自定义的JsPoint类,实现了C++的CPoint类,在画图和计算中应用,本类外部调用了扩展后的Object.IsPoint():


/*- ==========================================================
*     开发人员:卢印刚
*     编写时间:2006-9-26
*     函数名称:JsPoint
*     参数说明:
*     功能说明:对C++的CPoint类的实现
*     使用说明: 1、JsPoint( x, y ),根据x,y构造新的对象,最基本的构造方式
*                            2、JsPoint.Clone(),复制当前的JsPoint对象
*                            3、JsPoint.Copy( JsPoint ),复制JsPoint对象对象到当前
*                            4、JsPoint.SetPoint( x, y ),将x,y赋值到当前
*                            5、JsPoint.Offset( x, y ),将JsPoint对象进行Offset操作,分别加上x和y
*                            6、JsPoint.Equal( JsPointNew ),判断当前的对象是否与新的JsPointNew对象相等
*                            7、JsPoint.Add( JsPointNew ),实现了 + 操作附,并返回新的值
*                            8、JsPoint.Sub( JsPointNew ),实现了 - 操作附,并返回新的值
*                            9、JsPoint.AddEv( JsPointNew ),实现了 += 操作符
*                            10、JsPoint.SubEv( JsPointNew ),实现了 -= 操作符
-*/
{
function JsPoint()
{
    this.x = this.y = 0;
    if ( arguments.length >= 2){
        this.x = isNaN( arguments[0] ) ? 0 : arguments[0];
        this.y = isNaN( arguments[1] ) ? 0 : arguments[1];
    }
    this.version = function(){
      alert( "JsPoint1.0版\n\n作者:卢印刚\n\n2006.9.26\n\n版权所有");
    }
}
JsPoint.prototype.Clone    = function()        {    
      return ( new  this.constructor( this.x, this.y ) );        
}
JsPoint.prototype.Copy    = function( JsPt )    {    
      if ( JsPt.IsPoint() ){ 
            this.constructor( JsPt.x, JsPt.y ); 
      }    
}
JsPoint.prototype.SetPoint = function( x, y )    {    
      if ( isNaN(x) || isNaN(y) ) return;    
      this.x = x;    
      this.y = y;    
}
JsPoint.prototype.Offset    = function( x, y )    {    
      if ( isNaN(x) || isNaN(y) ) return;    
      this.x += x;    
      this.y += y;    
}
JsPoint.prototype.Equal    = function( JsPt )    {    
      return ( this.x == JsPt.x ) && ( this.y == JsPt.y );        
}
JsPoint.prototype.AddEv    = function( JsPt )    {    
      try{    
            this.Addset( JsPt.x, JsPt.y );    
      }catch(e){ }        
}
JsPoint.prototype.SubEv    = function( JsPt )    {
      try{ 
            this.Subset( JsPt.x, JsPt.y );
      }catch(e){ }        
}
JsPoint.prototype.Add    = function( JsPt )    { 
      try{ 
            var PT = this.Clone();
            PT.Offset( JsPt.x, JsPt.y );
            return PT;
      }catch(e){return null;}
}
JsPoint.prototype.Sub    = function( JsPt )    { 
      try{ 
            var PT = this.Clone();
            PT.Offset( -JsPt.x, -JsPt.y );
            return PT;
      }catch(e){return null;}
}

转载于:https://www.cnblogs.com/wait4u/archive/2006/09/27/516104.html

Javascript对象扩展 - JsPoint类相关推荐

  1. 重学前端-学习笔记-JavaScript对象

    说明 重学前端是程劭非(winter)在极客时间开的一个专栏,在此主要整理我的学习笔记.如有侵权,请联系我,谢谢. javascript对象特征 对象具有唯一标识性:完全相同的两个对象,也不是同一个对 ...

  2. php 类的数组对象,javascript、php数组对象互转类

    代码: /* @desc:数组和对象互转类 @param data 待转换的数据 */ function arrobj(data){ this.data = data /* @desc:对象转数组 * ...

  3. 如何测试一个空的JavaScript对象?

    在AJAX请求之后,有时我的应用程序可能返回一个空对象,例如: var a = {}; 如何检查情况呢? #1楼 如果您使用的是较新的浏览器,则有一种简单的方法. Object.keys(obj).l ...

  4. 如何正确克隆JavaScript对象?

    我有一个对象x . 我想将其复制为对象y ,以使对y更改不会修改x . 我意识到,复制从内置JavaScript对象派生的对象将导致额外的不需要的属性. 这不是问题,因为我正在复制自己的文字构造对象之 ...

  5. javascript小技巧 JavaScript[对象.属性]集锦 [zz]

    因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...

  6. 什么是在JavaScript中扩展错误的好方法?

    本文翻译自:What's a good way to extend Error in JavaScript? I want to throw some things in my JS code and ...

  7. javascript对象使用总结

    javascript对象使用总结 一.总结 一句话总结:js对象的主要知识点是创建对象和继承,并且创建对象和继承的方法都是逐步层层递进的 创建对象 继承 原型 创建对象 1 <script> ...

  8. javascript小技巧amp;amp;JavaScript[对象.属性]集锦 [转载了多篇]

    因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...

  9. javascript小技巧JavaScript[对象.属性]集锦 [转载了多篇]

    因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...

最新文章

  1. hive的数据定义之创建数据库和表
  2. 程序员最害怕的5件事 你中招了吗?
  3. 【校招面试 之 C/C++】第15题 C 回调函数
  4. tokudb mysql_【MySQL】TokuDB引擎安装教程
  5. NYOJ 683 Jim的实验
  6. C# Aspose.Word 操作word文档(利用模板)
  7. linux 自定义键盘布局,Ubuntu自定义键位xmodmap
  8. android 应用的资源
  9. 打印机喷嘴清洗必杀武器
  10. 云优CMS插件不需要云优CMS授权码的插件
  11. matlab opencv模板匹配算法,OpenCV模板匹配函数matchTemplate详解
  12. java拼接字符串返回
  13. fatal: unsafe repository (‘/home/anji/gopath/src/gateway‘ is owned by someone else)
  14. 高效并发unsafe-星耀
  15. 网络中搜不到局域网内的其他计算机,局域网中搜不到其他计算机怎么修复
  16. 嵌入式的优势在哪里?
  17. Spring Cloud 2022.0.0正式发布:OpenFeign稳得很全面迈向GraalVM
  18. WIN7/10定时关机或重启命令行脚本代码集锦
  19. 有道翻译爬虫+JS逆向
  20. 勒索病毒之后 企业文件安全保护如何落到实处?

热门文章

  1. Kotlin入门(21)活动页面的跳转处理
  2. 删除字符,用外部函数
  3. ionic2 问题整理汇总
  4. Javascript的对象继承方法
  5. java中写sql语句的小小细节
  6. iOS UI-自动布局(Autoresizing)
  7. PostgreSQL 如何实现网络压缩传输或加密传输(openssl)
  8. 9.2.2、Libgdx的输入处理之事件处理
  9. Linux配置文件字体颜色
  10. 记录一下目前thinksoar portal的进度和计划!