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 相关文章推荐
JavaScript 在线压缩和格式化收藏
Jan 16 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
Vue简单实现原理详解
May 07 Javascript
ES6 Generator基本使用方法示例
Jun 06 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
自定义session存储机制避免会话保持问题
2014/10/08 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
js中文逗号转英文实现
2014/02/11 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
实例解析Array和String方法
2016/12/14 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python字符串格式化方式解析
2019/10/19 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
浅谈Python __init__.py的作用
2020/10/28 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
青年教师典范事迹材料
2014/01/31 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
先进工作者个人总结
2015/02/15 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript