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 相关文章推荐
学习YUI.Ext第五日--做拖放Darg&amp;Drop
Mar 10 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
基于jQuery仿淘宝产品图片放大镜特效
Oct 19 Javascript
IScroll5 中文API参数说明和调用方法
May 21 Javascript
基于JavaScript实现回到页面顶部动画代码
May 24 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
JS实现弹出下载对话框及常见文件类型的下载
Jul 13 Javascript
React + webpack 环境配置的方法步骤
Sep 07 Javascript
详解vue 兼容IE报错解决方案
Dec 29 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 Javascript
vue控制多行文字展开收起的实现示例
Oct 11 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常用代码大全(新手入门必备)
2010/06/29 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
Angular2库初探
2017/03/01 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
通过cmd进入python的步骤
2020/06/16 Python
大数据分析用java还是Python
2020/07/06 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
李强优秀员工观后感
2015/06/16 职场文书
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫