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

由于和几个人在外面给别人搭建网站,项目需要学习了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. SQL Server 2012复制教程以及复制的几种模式

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  2. EF 增删改

    一.新增 UserInfo user = new UserInfo() { UserName = "jamsebing", UserPass = " }; db.User ...

  3. 关于Visual Studio 2015中没有报表项(ReportViewer)的解决方案。

    没有报表,一般默认安装之后会出现这种情况,在安装的时候选择自定义安装,把Microsoft Office 开发人员工具.Microsoft SQL Server Data Tools勾选上,安装之后就 ...

  4. JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  5. 妈妈再也不用担心别人问我是否真正用过redis了

    1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...

  6. CSS修改input[type=range]滑块样式

    input[type="range"]是html5中的input标签新属性,样子如下: <input type="range" value="4 ...

  7. input(file)样式修改及上传文件名显示

    实现思路: a标签包裹input元素 设置a标签为上传按钮的样式,相对定位 设置input为透明,绝对定位,覆盖到a上面 效果:看到的按钮是a的样式,点击时实际是点击input元素.样式和功能都具备 ...

  8. ubuntu16.04下安装cuda8.0

    一.首先安装NVIDIA显卡驱动 通过NVIDIA-Linux-x86_64-367.44.run文件安装. 1. 添加 PPA. sudo add-apt-repository ppa:graphi ...

  9. .NET LINQ 筛选数据

    筛选数据      筛选指将结果集限制为只包含那些满足指定条件的元素的操作. 它又称为选择. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 OfType ...

  10. (转: daifubing的博客 )Delphi二维码中文支持、分组、批量打印经验小结

    一直也没接触到什么复杂的报表,都是一些简单的报表,在DelphI下使用QuickReport一般也就能满足需要了,由于公司现在需求的变化,对条码扫描提出了新的要求,主要是扫码要包含更多地内容,以前的一 ...