一)函数

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的更多相关文章

  1. js中的函数,Date对象,Math对象和数组对象

    函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...

  2. 前端之js中的函数

    函数 函数就是重复执行的代码片.   函数定义与执行 <script type="text/javascript">     // 函数定义     function ...

  3. JS中给函数参数添加默认值(多看课程)

    JS中给函数参数添加默认值(多看课程) 一.总结 一句话总结:咋函数里面是可以很方便的获取调用函数的参数的,做个判断就好,应该有简便方法,看课程. 二.JS中给函数参数添加默认值 最近在Codewar ...

  4. JS OOP -02 深入认识JS中的函数

    深入认识JS中的函数: 1.概述,认识函数对象 2.函数对象和其他内部对象的关系 3.将函数作为参数传递 4.传递给函数的隐含参数:arguments 5.函数的apply,call方法和length ...

  5. JS中的函数、Bom、DOM及JS事件

    本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...

  6. node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了

    最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(fu ...

  7. JS中的函数、BOM和DOM操作

     一.JS中的函数 [关于注释] /** [文档注释]:开头两个*.写在函数上方,在调用函数时可以看到文档上方的描述信息. */   // 单行注释 /* 多行注释 */ 1.函数的声明及调用 (1) ...

  8. html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结

    Day27  html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...

  9. js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

    js课程 3-10  js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...

随机推荐

  1. <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)

    原创博客,转载请联系博主! 摘要:本文介绍了如何使用docker快速搭建一个可以从外部访问的mysql服务容器,和由docker搭建的分布式Hadoop文件系统,并且使用ApacheSqoop完成将m ...

  2. [ Office 365 开发系列 ] 开发模式分析

    前言 本文完全原创,转载请说明出处,希望对大家有用. 在正式开发Office 365应用前,我们先了解一下Office 365的开发模式,根据不同的应用场景,我们选择最适合的开发模式. 阅读目录 Of ...

  3. python基础set

    1.set set是一个无序的不重复的集合 li=[11,22,33,11] s=set(li) print(s) {11,22,33}  set提供的方法 1.add(self, *args, ** ...

  4. hibernate进阶--一对多映射配置

    hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码 ...

  5. NOI2002 银河英雄传说

    P1196 银河英雄传说 367通过 1.1K提交 题目提供者该用户不存在 标签并查集NOI系列2001(或之前) 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 莱因哈特什么鬼? 私人代码 ...

  6. SPSS时间序列:频谱分析

    一.频谱分析(分析-预测-频谱分析) “频谱图”过程用于标识时间序列中的周期行为.它不需要分析一个时间点与下一个时间点之间的变异,只要按不同频率的周期性成分分析整体序列的变异.平滑序列在低频率具有更强 ...

  7. css框模型

    元素的背景是内容.内边距和边框区的背景. css中:width 和 height 指的是内容区域的宽度和高度.增加内边距.边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸. bootstr ...

  8. oracle11g ORA-12505

    对于这个问题我前一天还可以用的,第二天打开就报这个错误了. 我在网上找了很多方法,大多为修改/listener.ora这个文件里的SID,修改后也没弄好. 我的解决方法很简单, 打开Oracle Ne ...

  9. 写给Node.js新手的7个小技巧

    一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...

  10. centos6.5_x86_64安装Adobe Flash Player

    对x86_64的CentOS6.5系统,安装FireFox的Adobe Flash Player插件 安装插件,终端下输入命令:#wget http://linuxdownload.adobe.com ...