zoukankan      html  css  js  c++  java
  • 犀牛书随手记-06

    在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;
        假设传递了两个或者以上则跟直接量创建的‘一样’
    */
    • 全部的数组都是对象。能够为其创建随意名字的属性。


    • 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

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

  • 相关阅读:
    TCP心跳 | TCP keepAlive(转)
    闲说HeartBeat心跳包和TCP协议的KeepAlive机制
    一个DNS统计,RCFs,工具站点
    JMX
    【转】如何实现一个配置中心
    用Netty开发中间件:高并发性能优化
    UDP server & client
    DNS缓存
    C正则库做DNS域名验证时的性能对比
    DNS压力测试工具dnsperf简介
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7327586.html
Copyright © 2011-2022 走看看