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

由于和几个人在外面给别人搭建网站,项目需要学习了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. HSF和Dubbo有什么区别

    一. 以下摘录自企业级分布式应用服务EDAS官网段落 RPC服务 提供对Dubbo和HSF两个RPC框架的支持.阿里巴巴第一代RPC框架Dubbo是国内第一款成熟的商用级RPC框架,已于2011年正式 ...

  2. .NET 多个程序配置文件合并到主app.config

    .NET 多个程序配置文件合并到主app.config

  3. 为什么为 const 变量重新赋值不是个静态错误

    const 和 let 的唯一区别就是用 const 声明的变量不能被重新赋值(只读变量),比如像下面这样就会报错: const foo = 1 foo = 2 // TypeError: Assig ...

  4. R语言进行数据预处理wranging

    R语言进行数据预处理wranging li_volleyball 2016年3月22日 data wrangling with R packages:tidyr dplyr Ground rules ...

  5. redirect()重新定向·

  6. Android刷机教程

    我的机器是Nexus 5 一. 安装驱动 如何进入fastboot模式 1. 拔掉数据线,将手机关机 2. 关机后同时按住[音量减小键]和[开关机键]即可进入Fastboot模式 开启usb调试  - ...

  7. mingw32 捕获异常的4种方法

    ------------------------------------------------------------------------------- 1. 利用 windows 的API S ...

  8. Magento 新增字段的值读写丢失原因

    某实体新增字段handreturn_status,欲操作之: $order_info = Mage::getModel('sales/order')->load($order_id); //se ...

  9. 向Maven的本地库中添加jar文件

    有时我们要用的 maven 依赖项在官方repo库中找不到,然而我们从其他渠道获得了依赖项中的所有jar文件,本文记录了如何向本地库添加jar文件. 从复杂到简单,有三种方法: 使用 maven 的仓 ...

  10. snprintf 使用注意

    #include <iostream> #include <cstdio> // 包含的头文件 using namespace std; int main(int argc, ...