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 相关文章推荐
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
Jan 09 Javascript
javascript教程之不完整的继承(js原型链)
Jan 13 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
js实现五星评价功能
Mar 08 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
Sep 11 Javascript
在JavaScript中如何使用宏详解
May 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
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
对联广告js flash激活
2006/10/19 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
jQuery列表检索功能实现代码
2017/07/17 jQuery
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
python实现在线翻译
2020/06/18 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
行政办公员自我评价分享
2013/12/14 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
运动会800米加油稿
2014/02/22 职场文书
寒假家长评语大全
2014/04/16 职场文书
干部考察材料范文
2014/12/24 职场文书
销售会议开幕词
2015/01/28 职场文书
置业顾问岗位职责
2015/02/09 职场文书
小学安全教育主题班会
2015/08/12 职场文书
关于五一放假的通知
2015/08/18 职场文书
Python如何让字典保持有序排列
2022/04/29 Python