JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype
一)函数
A)JS中的函数的定义格式:
function add(a,b)
{
var sum = a+b;
document.write("两个数的和是:" + sum);
//return sum;
}
上面只是一个例子 ,那么当我们再定义一个同名的函数会怎么样呢?
function add(a,b,c)
{
var sum = a+b+c;
document.write("三个数的和是:" + sum);
}
然后调用函数:
add(50,30,10); 输出结果:三个数的和是:90
add(50,30); 输出结果:NaN
上述例子说明了 在javascript中是没有函数重载的概念的,后定义的同名函数会覆盖前面的同名函数。
B)
让我们了解一下函数的调用过程:
在javascript中调用一个函数的时候传递进去的实参,并不是马上传递给形参的,而是会把实参的数据封装到函数中的arguments数组中。然后再从arguments数组中分配数据给形参。
那么我们写一个测试函数:
function test(a,b){
//任何一个函数都隐式维护了一个arguments的数组对象在里面
for(var index = 0 ; index<arguments.length ; index++){
document.write(arguments[index]+",");
}
}
test(10,30,"abc");
输出结果:10,30,abc,
虽然test()函数只接收两个参数,但是会先把3个实参都传给arguments数组。
二)Array对象
Array对象中有两个比较特殊的方法,下面分析一下:
A)sort()方法:该方法按照指定的排序的方法排序,该方法接收一个参数,我们在使用的时候可以传入一个排序时的比较方法:
//排序方法
function sortArr(num1,num2){
return num1-num2;
}
然后调用
arr.sort(sortArr); //注意: 传递方法的时候不能加上双引号以及小括号。
B)join()方法:把所有元素由指定的分隔符分隔开来组成一个字符串,返回这个字符串值。
这个方法返回一个字符串,我们可以利用这个方法把数组转换为字符串类型。
Arr.join(“”); 参数为空,那么字符间就没有分隔符。
三)在JS中有没有增强型for循环呢?有的,在JS中增强型for循环叫做for-in语句。
for-in语句的格式:
for(var 变量 in 遍历的目标){
}
for-in语句的作用对象:
1. 可以用于遍历一个数组的元素。
2. 可以用于遍历一个对象的所有成员。
注意事项:
1. 使用for-in语句遍历一个数组对象的 时候,遍历出来的是数组 的索引值。
2. 使用for-in语句遍历一个数组对象的时候,遍历出来的是对象的属性名。
所以,要得到数组元素的值,必须以遍历的索引为脚标把元素值去取出来。
示范代码:
var arr = [12,15,18,20,22];
for(var temp in arr){
document.write(arr[temp]+",");
}
同理,以对象的属性名为脚标,用 对象名[属性名] 这个格式把属性值取出来:
var p = new Person(110,"狗娃");
for(var item in p ){
document.write(item+"="+p[item]+",");
}
四)with语句
当有一个地方需要大量调用一个对象的方法时,我们就可以用with语句减轻代码量。
使用格式:
with(对象){
//直接使用对象的属性或者方法,不需要再重新指定对象。
}
示例:
with(Math){
document.write("绝对值:"+abs(-3.14)+"<br/>");
document.write("向上取整:"+ceil(-3.14)+"<br/>"); //-3
document.write("向下取整:"+floor(-3.14)+"<br/>"); // -4
document.write("随机数:"+random()+"<br/>"); //
document.write("四舍五入:"+round(3.46)+"<br/>"); //
}
这里调用的方法就不必写上 Math.方法名 了~
五)自定义对象
在javascript是没有类的概念的,在javascript需要定义对象时,只要有函数存在即可。
有函数就可以定义对象了。
自定义对象有很多种方法,下面将演示一下:
A)提供一个无参数的函数自定义对象:
function person()
{
//使用了person函数创建了一个对象了。
var p = new person();
p.id = 110;
p.name = "狗娃";
p.eat = function(){
alert(this.name+"吃饭了...");
}
document.write("编号:"+ p.id+" 姓名:"+ p.name);
p.eat();
在对象内部声明一个本体对象,然后设置它的各种属性,还可以设置这个对象的行为,上述代码就设置了eat()行为。
B)提供一个带参数的函数自定义对象:
function person(id,name)
{
this.id = id;
this.name= name;
this.eat = function(){
alert(this.name+"吃饭了...");
}
}
//创建对象
var p = new person(110,"狗娃");
document.write("编号:"+ p.id+" 姓名:"+ p.name+"<br/>");
var p2 = new person(119,"狗剩");
document.write("编号:"+ p2.id+" 姓名:"+ p2.name+"<br/>");
通过使用 this.属性 = 属性 的方式为属性赋值,和Java中的构造方法类似;定义对象方法的格式通过 this.方法名 = function(参数){代码} 来完成 。
C)javascript给我们提供了一个无参 的函数让我们创建对象。
//创建了一个对象
var p = new Object();
p.id = "110";
p.name = "狗娃";
这个无参的函数就是 Object(),我们通过new一个Object生成一个对象,然后就能设置这个对象的属性跟方法了。
D)使用字面量的方式创建对象
var p ={
id:110,
name:"狗娃",
eat:function(){
alert(this.name+"吃饭了...");
}
}
document.write("编号:"+ p.id+" 姓名:"+ p.name+"<br/>")
p.eat();
直接声明一个变量,然后再赋值号的右边用中括号编写对象的属性,这时候属性赋值要用:号而不是=号。
六)Prototype(原型)
在JAVA中,每一个类都有一个Class对象,相似的,JS中有一个叫Prototype的属性,它的值是一个对象。
而重点在于,当你获取到了一个函数的ProtoType的属性的时候,你可以给这个属性指向的对象添加一个方法或者属性,
当你给Prototype添加方法或者属性的时候,那么Prototype所属的函数会自动拥有Prototype的所有属性或者方法。也就是说,我们可以往JS自带的对象中添加方法了!
下面我们给Array对象添加两个方法: 把searchEle与getMax方法添加到Array函数上,如果添加到了Array函数上,那么以后我们 的数组对象就可以直接使用这两个 方法了。
Array.prototype.searchEle = function(element){
for(var index = 0 ; index<this.length ; index++){
if(this[index]==element){
return index;
}
}
return -1;
}
//Array.prototype得到prototype对象,然后添加searchEle 方法。
//再给Array方法再添加一个getMax方法
Array.prototype.getMax = function(){
var max = this[0];
for(var index = 1 ; index<this.length ; index++){
if(this[index]>max){
max = this[index];
}
}
return max;
}
var arr = new Array(12,14,19,10);
var index = arr.searchEle(19);
var max = arr.getMax();
document.write("找到的元素索引值是:"+index+" 最大值:"+ max);
JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype的更多相关文章
- js中的函数,Date对象,Math对象和数组对象
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
- 前端之js中的函数
函数 函数就是重复执行的代码片. 函数定义与执行 <script type="text/javascript"> // 函数定义 function ...
- JS中给函数参数添加默认值(多看课程)
JS中给函数参数添加默认值(多看课程) 一.总结 一句话总结:咋函数里面是可以很方便的获取调用函数的参数的,做个判断就好,应该有简便方法,看课程. 二.JS中给函数参数添加默认值 最近在Codewar ...
- JS OOP -02 深入认识JS中的函数
深入认识JS中的函数: 1.概述,认识函数对象 2.函数对象和其他内部对象的关系 3.将函数作为参数传递 4.传递给函数的隐含参数:arguments 5.函数的apply,call方法和length ...
- JS中的函数、Bom、DOM及JS事件
本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...
- node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了
最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(fu ...
- JS中的函数、BOM和DOM操作
一.JS中的函数 [关于注释] /** [文档注释]:开头两个*.写在函数上方,在调用函数时可以看到文档上方的描述信息. */ // 单行注释 /* 多行注释 */ 1.函数的声明及调用 (1) ...
- html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结
Day27 html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...
- js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么
js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...
随机推荐
- MFC学习 MFCActiveX控件
例子包含 1. 重绘activex控件显示区域 在activex的ctrl类中ondraw中实现 2.添加修改activex控件属性(前景色, 背景色, 自定义属性),, 只要在类视图中展开libra ...
- C语言-删除重复字符
//实现对一个字符串的删除重复的字符,并输出删除后的字符串,(如从”testroadeasy”中输出”tesroady”) Action(){ char *str="testroade ...
- SQL Server :Stored procedures存储过程初级篇
对于SQL Server,我是个拿来主义.很多底层的原理并不了解,就直接模仿拿着来用了,到了报错的时候,才去找原因进而逐步深入底层.我想,是每一次的报错,逼着我一点点进步的吧. 近期由于项目的原因,我 ...
- maven多工程构建与打包
目标:webapp_aggregator为聚合和父pom工程,不包含代码和资源,webapp为主web工程,webapp_module1为子web工程,webapp_common为基础子工程,两个we ...
- IIS7.0设置404错误页,返回500状态码
一般在II6下,设置自定义404错误页时,只需要在错误页中选择自定义的页面,做自己的404页面即可.但是在IIS7.0及以上时,设置完404错误页后,会发现状态码返回的是500,并且可能会引起页面乱码 ...
- 如何正确的使用Lerp In Unity
摘要 本文探讨如何用lerp实现近似的匀速旋转,当然如果运用本文给出的方法,使用slerp则可以实现匀速旋转,并指出Unity官方lerp示例代码的一些缺陷. 现有问题 比如四元数Lerp API: ...
- Flex 使用列表和表格
Flex 设计了不同的控件来实现列表和表格,不仅能够将数据显示在表格和列表中,还可以实现对数据进行操纵,修改等更加强大的功能. 与列表和表格相关的控件如下所示: 列表控件(List Control): ...
- 自定义模板语言之simple_tag和自定义过滤器
扩展你的模板系统 一般是扩展模板的tag和filter两个功能.可以用来创建你自己的tag和filter功能库. 创建模板库 分为两步: 1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一 ...
- Winserver2008R2 .netframework4.5 asp.netmvc 访问出现的是文件列表。
Winserver2008R2 .netframework4.5 asp.netmvc 访问出现的是文件列表,服务器需要安装如下的补丁,才可正常访问. http://www.microsoft.com ...
- 采用FLAG_ACTIVITY_CLEAR_TOP退出 多activity 或 整个程序
问题: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序. 网上资料:{ finish()和system(0)都只能退出单个activity. ...