JavaScript入门教程(12) js对象化编程


Posted in Javascript onJanuary 31, 2009

with 语句 为一个或一组语句指定默认对象。
用法:
with (<对象>) <语句>;
with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10);
y = Math.tan(14 * Math.E);
当使用 with 语句时,代码变得更短且更易读:

with (Math) { 
x = cos(3 * PI) + sin(LN10); 
y = tan(14 * E); 
}

this 对象 返回“当前”对象。在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。
一个常用的 this 用法:
<script> 
... 
function check(formObj) { 
... 
} 
... 
</script> 
<body ...> 
... 
<form ...> 
... 
<input type="text" ... onchange="check(this.form)"> 
... 
</form> 
... 
</body>

这个用法常用于立刻检测表单输入的有效性。
自定义构造函数 我们已经知道,Array(),Image()等构造函数能让我们构造一个变量。其实我们自己也可以写自己的构造函数。自定义构造函数也是用 function。在 function 里边用 this 来定义属性。
function <构造函数名> [(<参数>)] { 
... 
this.<属性名> = <初始值>; 
... 
}

然后,用 new 构造函数关键字来构造变量:
var <变量名> = new <构造函数名>[(<参数>)];
构造变量以后,<变量名>成为一个对象,它有它自己的属性——用 this 在 function 里设定的属性。
以下是一个从网上找到的搜集浏览器详细资料的自定义构造函数的例子:
function Is() { 
var agent = navigator.userAgent.toLowerCase(); 
this.major = parseInt(navigator.appVersion); //主版本号 
this.minor = parseFloat(navigator.appVersion);//全版本号 
this.ns = ((agent.indexOf('mozilla')!=-1) && 
((agent.indexOf('spoofer')==-1) && //是否 Netscape 
(agent.indexOf('compatible') == -1))); 
this.ns2 = (this.ns && (this.major == 3)); //是否 Netscape 2 
this.ns3 = (this.ns && (this.major == 3)); //是否 Netscape 3 
this.ns4b = (this.ns && (this.minor < 4.04)); //是否 Netscape 4 低版本 
this.ns4 = (this.ns && (this.major >= 4)); //是否 Netscape 4 高版本 
this.ie = (agent.indexOf("msie") != -1); //是否 IE 
this.ie3 = (this.ie && (this.major == 2)); //是否 IE 3 
this.ie4 = (this.ie && (this.major >= 4)); //是否 IE 4 
this.op3 = (agent.indexOf("opera") != -1); //是否 Opera 3 
this.win = (agent.indexOf("win")!=-1); //是否 Windows 版本 
this.mac = (agent.indexOf("mac")!=-1); //是否 Macintosh 版本 
this.unix = (agent.indexOf("x11")!=-1); //是否 Unix 版本 
} 
var is = new Is();

这个构造函数非常完整的搜集了浏览器的信息。我们看到它为对象定义了很多个属性:major, minor, ns, ie, win, mac 等等。它们的意思见上面的注释。把 is 变量定义为 Is() 对象后,用 if (is.ns) 这种格式就可以很方便的知道浏览器的信息了。我们也可以从这个构造函数中看到,它也可以使用一般的 JavaScript 语句(上例中为 var 语句)。
让我们再来看一个使用参数的构造函数:
function myFriend(theName, gender, theAge, birthOn, theJob) { 
this.name = theName; 
this.isMale = (gender.toLowerCase == 'male'); 
this.age = theAge; 
this.birthday = new Date(birthOn); 
this.job = theJob 
} 
var Stephen = new myFriend('Stephen', 'Male', 18, 'Dec 22, 1982', 'Student');

从这个构造函数我们不但看到了参数的用法,还看到了不同的属性用不同的数据型是可以的(上例五个属性分别为:字符串,布尔值,数字,日期,字符串),还看到了构造函数里也可以用构造函数来“构造”属性。如果用了足够的“保护措施”来避免无限循环,更可以用构造函数自身来构造自己的属性。
Javascript 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
javascript知识点收藏
Feb 22 Javascript
javascript 用原型继承来实现对象系统
Mar 22 Javascript
jquery中eq和get的区别与使用方法
Apr 14 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
js单词形式的运算符
May 06 Javascript
javascript教程:关于if简写语句优化的方法
May 17 Javascript
jQuery ajax时间差导致的变量赋值问题分析
Jan 22 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
Mar 23 Javascript
js前端导出Excel的方法
Nov 01 Javascript
微信小程序实现图片上传功能
May 28 Javascript
JavaScript入门教程(11) js事件处理
Jan 31 #Javascript
JavaScript入门教程(10) 认识其他对象
Jan 31 #Javascript
JavaScript入门教程(9) Document文档对象
Jan 31 #Javascript
JavaScript入门教程(8) Location地址对象
Jan 31 #Javascript
JavaScript入门教程(7) History历史对象
Jan 31 #Javascript
JavaScript入门教程(6) Window窗口对象
Jan 31 #Javascript
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 #Javascript
You might like
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
phpfpm的作用和用法
2019/10/10 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
轮播的简单实现方法
2016/07/28 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
运动会广播稿60字
2014/01/15 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
研讨会主持词
2014/04/02 职场文书
家长对孩子的评语
2014/04/18 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
大学生自荐书范文
2015/03/05 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Nginx内网单机反向代理的实现
2021/11/07 Servers
JavaScript实现优先级队列
2021/12/06 Javascript