关于javascript:day07

16次阅读

共计 3574 个字符,预计需要花费 9 分钟才能阅读完成。

对象就是一组数据,形容同一个概念的不同属性

1. JSON 对象:

1) 定义:

  • 形容数据的一种格局, 将若干个属性或办法整顿成一个对象。能够不便的示意简单对象。

2) 语法:

    1. 花括号
    1. 键名要有双引号(字面量形式示意对象,键名不须要引号)
    1. 字符串值要有引号
    1. 键值之间是冒号 key:value
    1. 键值对之间是逗号,最初一个键值对前面不要加逗号
var cat= {
    "name":"猫咪",
    "age":3,
    "hobby":"fish",
    "action":function(){console.log('喵~');
    }        
}

3) 如何调用 JSON 里的属性

// 1. 打点 属性必须不带引号
//console.log(cat.'name');// Uncaught SyntaxError: Unexpected string
console.log(cat.age);//3
console.log(cat.hobby);//fish
// 2. 下标法 属性必须带引号
// console.log(cat[name]);//undefined
// console.log(cat[age]);//age is not defined
console.log(cat['hobby']);//fish

4) for in 的利用

for(var index in cat){
    //for...in 中不能通过点形式获取 JSON 对象属性
    // console.log(cat.index);//undefined
    // 能够通过下标法获取
    console.log(cat[index]);
}

5) this

    var huatengMa = {
        'name': '马化腾',
        'age': 50,
        'fun':function(user){
        //JSON 对象的花括号中的函数,如果应用其余的函数或属性的话,须要加前缀 this 
            console.log(this.name + '来' + user + '抽奖');
        }
    }
    huatengMa.fun('小米');

2. 严格模式

  • “use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。
  • “use strict” 的目标是指定代码在严格条件下执行。
  • 严格模式下你不能应用未声明的变量
  • 浏览器反对: IE10+ firefox4+Safari5.1+ Chrome

一般模式:

<script type="text/javascript">
    a =123;
    console.log(a);//123
</script>

严格模式:

<script type="text/javascript">
    'use strict';
    a =123;
    console.log(a);//a is not defined
</script>

3. ES5 新增的数组的办法

(1) indexOf

  • 在数组中查找一个数所在的地位。
  • 返回值:返回 查找元素的 下标, 找不到返回 -1
  • 利用:数组的去重

    // 数组去重
    var a = [5,7,7,3,8,7,8];
    var b = [];
    for(var i=0; i<a.length; i++){if(b.indexOf(a[i])==-1){b.push(a[i]);
        }
    }
    console.log(b);//5, 7, 3, 8

(2) 回调函数

  • 被当做另一个函数的参数的函数

如下示例:假如 f2 是第三方提供的函数,是非开源的,所以用户无奈批改函数体内的代码。然而需要是:f2 调用 f1。所以把 f1 当作参数传给第三方,第三方函数会主动在函数体内正当的地位调用传进去的回调函数

<script type="text/javascript">
    var f1 = function(){console.log('f1');
    }
    // 假如 f2 是第三方提供的函数,用户是无奈关上函数体外部去批改代码的
    function f2(f){// 实参 f1== 形参 f => f1() == f()}
    f2(f1);
</script>
回调函数的应用:
forEach 没返回值,间接扭转原数组
  • 对数组的每个元素做某个解决(函数的形式), 没有返回值,间接扭转以后数组。
  • 留神 :foEach() 函数的参数是个回调函数,forEach 对应的回调函数有三个参数(数组元素内容,【元素索引】,【数组自身】)
  • 回调函数: 回调函数的参数,也是固定好的

    var arr=[6,9,1];
    function add(item, index, arr){arr[index]*=10;
    }
    arr.forEach(add);
    console.log(arr);//60, 90, 10
map 有返回值, 通过 return 返回一个数组
  • 把原始数组的每个元素进行某种解决后,返回(映射)一个新的数组。回调函数参数是数组元素自身。
  • 留神 :map() 对应的回调函数有三个参数(数组元素内容,元素索引,数组自身)

    map() 办法返回一个新数组,数组中的元素为原始数组元素调用函数解决后的值。

    有没有 return, 都会有返回值。

var arr=[7,4,5];
function add(item, index, arr){arr[index] += 10;
    return 2;
}
var arr1 = arr.map(add);
console.log(arr1);//70, 40, 50

问题:forEach 与 map 有什么区别?

答:在于返回值的不同。forEach 无返回值; map 返回一个新的数组

filter 每个元素在遍历的时候依据条件, 抉择是否 return; 返回一个新数组
  • 依据条件过滤数组的元素,filter 的回调函数须要返回的是 boolean 类型的值。
  • 留神: filter()对应的回调函数有三个参数(数组元素内容,元素索引,数组自身)
  • filter() 不会扭转原始数组。将满足条件的元素从新生成一个新的数组,新数组中的元素是通过查看指定数组中符合条件的所有元素。
var arr=[7,4,6,9];
function myFilter(item, index, arr){
    // 返回奇数
    if(item%2){return item;}
}
var arr1 = arr.filter(myFilter);
console.log(arr1);//7, 9
reduce 累加每个元素的值
  • 如果未写 return,依然会有返回值(undefined)
    function add(total, item, index, arr){
        //total 的初始值为 0
        total = total +item;
        return total;
    }
    console.log(arr.reduce(add));

4. 字符串的定义和创立

(1)根本类型

var str = 'hello';
console.log(str, typeof str);//hello string

(2)援用类型

var str1 = new String('world');
console.log(str1);//{world}
console.log(typeof str1);//Object

5. ASCII 码表

是一个规范,把每个字符与一个 0 -255 的数字对应起来,这样就能够把字符变为数字,而后变为二进制码了。

13—> 回车

32—>space

48—> 字符 0

65—>A

97—>a

  • charAt(下标): 返回下标所对应的字母
  • charCodeAt(下标): 返回下标所对应的字母的 ASCII 码
var str='120ashioA'
console.log(str.charAt(1));//2 下标所对应的字母 等价于 str[1]
console.log(str.charCodeAt(3));//97 下标所对应的字母的 ASCII 码

6. 字符串常见 API 和属性

  • length:示意字符串的长度;
  • String.fromCharCode(97); //a 将编码转换成字符
  • indexOf(“abc”) 查找字符串第一次呈现的地位
  • lastIndexOf(“abc”) 查找字符串最初一次呈现的地位。如果没找到则返回 -1。
  • replace(src,dest) : 返回被 dest 替换 src 的字符串。
  • 截取字符串

    • slice

      • slice(start,end)提取字符串的某个局部,并以新的字符串返回被提取的局部。
      • 两个参数示意截取的开始下标和完结下标
      • 左闭右开
    • substring

      • substring(start,end) 提取字符串中介于两个指定下标之间的字符,并以新的字符串返回被提取的局部。
      • 两个参数示意截取的开始下标和完结下标
      • 左闭右开
    • 区别:slice 参数反对正数(从后往前算,正数的时候左开右闭),substring 不反对正数。
  • split 字符串宰割:字符串变数组

    • split(宰割符号) : 依据分隔符、拆分成数组
    var str = 'hello wo shi xiao mi';
    var arr = str.split('o');
    console.log(arr);//["hell", "w", "shi xia", "mi"]
  • toLowerCase()
  • toUpperCase()

正文完
 0