Javascript对象扩展 - JsPoint类
现在已经实现的扩展有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类相关推荐
- 重学前端-学习笔记-JavaScript对象
说明 重学前端是程劭非(winter)在极客时间开的一个专栏,在此主要整理我的学习笔记.如有侵权,请联系我,谢谢. javascript对象特征 对象具有唯一标识性:完全相同的两个对象,也不是同一个对 ...
- php 类的数组对象,javascript、php数组对象互转类
代码: /* @desc:数组和对象互转类 @param data 待转换的数据 */ function arrobj(data){ this.data = data /* @desc:对象转数组 * ...
- 如何测试一个空的JavaScript对象?
在AJAX请求之后,有时我的应用程序可能返回一个空对象,例如: var a = {}; 如何检查情况呢? #1楼 如果您使用的是较新的浏览器,则有一种简单的方法. Object.keys(obj).l ...
- 如何正确克隆JavaScript对象?
我有一个对象x . 我想将其复制为对象y ,以使对y更改不会修改x . 我意识到,复制从内置JavaScript对象派生的对象将导致额外的不需要的属性. 这不是问题,因为我正在复制自己的文字构造对象之 ...
- javascript小技巧 JavaScript[对象.属性]集锦 [zz]
因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...
- 什么是在JavaScript中扩展错误的好方法?
本文翻译自:What's a good way to extend Error in JavaScript? I want to throw some things in my JS code and ...
- javascript对象使用总结
javascript对象使用总结 一.总结 一句话总结:js对象的主要知识点是创建对象和继承,并且创建对象和继承的方法都是逐步层层递进的 创建对象 继承 原型 创建对象 1 <script> ...
- javascript小技巧amp;amp;JavaScript[对象.属性]集锦 [转载了多篇]
因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...
- javascript小技巧JavaScript[对象.属性]集锦 [转载了多篇]
因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...
最新文章
- hive的数据定义之创建数据库和表
- 程序员最害怕的5件事 你中招了吗?
- 【校招面试 之 C/C++】第15题 C 回调函数
- tokudb mysql_【MySQL】TokuDB引擎安装教程
- NYOJ 683 Jim的实验
- C# Aspose.Word 操作word文档(利用模板)
- linux 自定义键盘布局,Ubuntu自定义键位xmodmap
- android 应用的资源
- 打印机喷嘴清洗必杀武器
- 云优CMS插件不需要云优CMS授权码的插件
- matlab opencv模板匹配算法,OpenCV模板匹配函数matchTemplate详解
- java拼接字符串返回
- fatal: unsafe repository (‘/home/anji/gopath/src/gateway‘ is owned by someone else)
- 高效并发unsafe-星耀
- 网络中搜不到局域网内的其他计算机,局域网中搜不到其他计算机怎么修复
- 嵌入式的优势在哪里?
- Spring Cloud 2022.0.0正式发布:OpenFeign稳得很全面迈向GraalVM
- WIN7/10定时关机或重启命令行脚本代码集锦
- 有道翻译爬虫+JS逆向
- 勒索病毒之后 企业文件安全保护如何落到实处?