老师布置了一项作业,说是要按着老师的要求写,但我觉得只要是技术分享的心得就是好的,不论是不是所要求的内容。

由于和几个人在外面给别人搭建网站,项目需要学习了jsp有用到了javascript,这里有一些学习心得。

给大家共享一下。

在JS中一个对象的数据属性一般有4个特性,分别为

  • 值(value)
  • 可写性(writable)
  • 可枚举性(enumerable)
  • 可配置性(configurable) 
    后三者的值都是布尔型 
    Object.getOwnPropertyDescriptor() 可以获得某个对象特定属性的属性描述符 
    想要批量修改或者创建这四个特性需调用 
    Object.defineProperties()第一个参数是要修改的对象,第二个参数是一个映射表,它包含需要新建或者修改的属性的名称,以及他们的属性符描述 
    单个调用Object。defineProperty() 
    (只能修改自身的不能修改继承的)

数组

  • 数组中的索引可以是不连续的(对于不连续的数组,其length属性大于元素个数)
  • 数组有两种创建方式(直接量,跟构造函数)

//直接量
var ary = [1,3,2];
//构造函数
var ary = new Array();
/*
如果实例化一个数组对象时传递了一个参数
ary = new Array(10);
表示的是 ary这个数组的长度是10;
如果传递了两个或者以上则跟直接量创建的‘一样’
*/var ary = [1,3,2]; //构造函数 var ary = new Array(); /* 如果实例化一个数组对象时传递了一个参数 ary = new Array(10); 表示的是 ary这个数组的长度是10; 如果传递了两个或者以上则跟直接量创建的‘一样’ */

  • 所有的数组都是对象,可以为其创建任意名字的属性。
  • ECMAScript 5 中新增的数组方法,基本都是遍历数组,原数组本身不变。 
    这些方法接受两个参数,一个function,一个context 
    第一个参数function中一般传递三个参数,分别为:当前遍历到的数组元素,当前遍历到的数组元素的索引,数组本身。 
    第二个参数 context 是可选参数,传递了,那么第一个参数function中的this,即为context。默认为window 
    1.forEach,从头自尾的遍历数组的每一项 
    举个栗子
var ary =[1,2,3,4];
ary.forEach(function(){
console.log(arguments);
})
/*运行结果
VM146:3 [1, 0, Array[4]]
VM146:3 [2, 1, Array[4]]
VM146:3 [3, 2, Array[4]]
VM146:3 [4, 3, Array[4]]
*/

2.map:将数组的每一项传给指定的函数,并返回一个数组 
举个栗子

var b = ary.map(function(item){
item *= item; })
/*
运行结果
b
[undefined, undefined, undefined, undefined]
*/
var b = ary.map(function(item){
return item *= item;
})
/*
运行结果
b
[1, 4, 9, 16]
*/

3.filter()返回的数组元素是调用的数组的一个子集,通过传递的逻辑来判断。 
举个例子

var b = ary.filter(function(item){
return item >2;
})
/*
b[3, 4]
*/

4.every()和some() 
它们对数组元素应用指定函数进行判断,返回true跟false 
every是针对所有的,只有当遍历完所有且均满足条件时才会返回true,在遍历的过程中,一旦有不符合条件的,则返回false,并停止遍历。 
举个例子

var num = 0;
ary.every(function(item){
num++;
return item<2;
})
/*false
num
2*/

some是针对,数组其中某个元素,一旦有一个元素满足条件,则返回true,且终止遍历,否则,直到遍历玩所有的,均不符合条件,则返回false。

5.reduce 跟 reduceRight 
reduce()和reduceRight是使用指定的函数将数组元素进行组合,生成单个值。 
举个例子

ary.reduce(function(x,y){
return x+y;
})
//10

reduce 需要两个参数。第一个是执行简单会操作的函数。第二个参数是给函数传递一个初始值。 
举个例子

ary.reduce(function(x,y){
return x+y;
},10)
//20

第一个参数function的参数 
第一个为,当前计算的累积值(默认为0,如果reduce传递了第二个参数,则为第二个参数的值) 
第2-4个参数,数组元素,数组元素索引,数组本身

注意在空数组上,不带第二个参数(初始值)会报类型错误

reduceRight的工作原理与reduce的原理类似,不同的是,reduce是从索引低到高处理数组,reduceRight刚好相反,从高到低处理。

6.indexOf()跟lastIndexOf() 
搜索整个数组中具有给定值的元素。 
indexof 其第一次出现的索引值 
lastIndexOf 最后一次出现的索引值 
找不到则返回-1 
举个栗子

var ary = [1,3,1,3,1];
var b = ary.indexOf(1);//0
var b = ary.lastIndexOf(3);//3
var b = ary.indexOf(10);//-1

值得注意的是,这个方法不接受 函数作为参数,第二个参数也是可选的:它指定数组中的一个索引,即从哪里开始搜索。如果省略,则从头开始搜索。它也可以为负数,它代表对数组末尾的偏移量。

我JSP学习心得1的更多相关文章

  1. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...

  2. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  3. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  4. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  9. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. QT中检索设定目录下所有指定文件的方法

    void MainWindow::on_pushButton_clicked() { QDir dir=QFileDialog::getExistingDirectory(this, tr(" ...

  2. [译]Testing Node.js With Mocha and Chai

    原文: http://mherman.org/blog/2015/09/10/testing-node-js-with-mocha-and-chai/#.ViO8oBArIlJ 为什么要测试? 在此之 ...

  3. 7、I/O流

    一.流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.I/O就 ...

  4. 【Android学习】android:layout_weight的用法实例

    对于android:layout_weight的用法,用下面的例子来说明: <LinearLayout xmlns:android="http://schemas.android.co ...

  5. struts标签内容截取

    <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%> <% ...

  6. 多线程更新UITableView时容易导致的问题

    我请求同一个接口两次, 第一次是那缓存, 第二次是那网络数据在请求成功回调的主线程异步的, 先赋值数据源, 然后调用uitableview reloaddata的方法, 这时候问题来了 reloadd ...

  7. nginx + tomcat配置负载均衡

    目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...

  8. 数组去重及数组的prototype原型

    Array.prototype.check= function(){ for(var i=0;i<this.length;i++){ for(var j=i+1;j<this.length ...

  9. spring quartz分布式任务计划

    spring quartz分布式任务计划 环境: 通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz ...

  10. .NET 泛型

    泛型      泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候.例如,通过 ...