javascript引用类型-Date类型-Math类型-Global类型-this用法-数组的操作

作者: 鲁智深 分类: JAVASCRIPT 发布时间: 2015-12-14 15:57

Date类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//Date类型 - 创建对象 - 获取和设置当前日期时间。
var date = new Date();
console.log(date);//Fri Oct 27 2017 18:25:59 GMT+0800 (中国标准时间)

//Date对象中的方法
// getFullYear() - 获取当前年份
console.log(date.getFullYear());//2017

//getYear() - 获取距离1900年的年份
console.log(date.getYear());//117

//getMonth() - 获取月份(是从 0 开始计算)
console.log(date.getMonth());//9

//getDate() - 获取日期
console.log(date.getDate());//27

//getDay() - 获取星期
console.log(date.getDay());//5

//小时 - getHours()
console.log(date.getHours());//18

//分钟 - getMinutes()
console.log(date.getMinutes());//46

//秒 - getSeconds()
console.log(date.getSeconds());//27

//获取毫秒getMilliseconds()
console.log(date.getMilliseconds()); //800

//getTime()获取距离1970年1月1日的毫秒数
//时间戳的概念
//时间戳的应用:将当前的毫秒数作为一个标识(唯一,不可重复) 实现时间段的计算
console.log(date.getTime()); //1509101398071

Math类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Math类型,不需要创建对象
//Math对象并不像Date和String那样是对象的类,因此没有构造函数 Math(),像Math.sin()这样的函数只是函数,不是某个对象的方法。
//您无需创建它,通过把 Math 作为对象使用就可以调用其所有属性和方法。

// PI圆周率
console.log(Math.PI);//3.1415926

//floor() - 向下取整
console.log(Math.floor(1.2243324));//1

// ceil() - 向上取整
console.log(Math.ceil(1.2243324));//2

// round() - 四舍五入
console.log(Math.round(1.2243324));//1

// random() - 生成随机数(范围 0~1)
console.log(Math.random());
//公式Math.random()*(max - min)+min;

//random() - 生成1~100内的数字
console.log(Math.random()*100+1);

Global类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Global类型</title>
    <script>
          //Global全局对象 ECMAScript中最特别的对象,因为从那个角度上看,这个对象都是不存在的。
          // isNaN()、isFinite()、parseInt()以及parseFloat(),实际上全部都是Global对象的方法。
          // 除此之外Global还包含其他一些方法。
          //函数那一段就有预定义函数
          //JavaScript 预定义了一组函数,又称为全局函数,允许直接使用。
         //它们的父亲就是Global全局对象

        function fn() {
            return 10;
        }
        console.log(window.fn());

          /*
           Global类型
           * 注意 - 不能直接使用
           * JavaScript的运行环境
           * 非浏览器环境(Node.js) -> 具有Global对象,但不能直接使用
           * 浏览器环境 -> 被BOM中的Window对象替代
           * 含义 - 更多都是概念上的内容
           */
    </script>
</head>
<body>

</body>
</html>

this的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>this的用法</title>
    <script>
          //浏览器环境
          //测试出当前对象是谁
          function fn() {
              console.log(this);//输出window,这里的this代表当前对象,现在在浏览器环境,那么当前对象是window
          }
          fn();//函数调用
           //所有浏览器都支持 window 对象。它表示浏览器窗口
           //所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
          window.fn();//证明在浏览器运行的函数,函数时浏览器对象的方法

          //在来判断this用法
          var obj = {
              sayMe : fn
          }

          obj.sayMe();//{sayMe: ƒ}this就成了当前的对象obj

           //在构造函数测试一下this
          function Fnn() {
              this.sayMe = fn;
          }
          var f = new Fnn();
          f.sayMe();//Fnn {sayMe: ƒ}this就代表了当前对象Fnn

         //总结:js的全局函数(预定义函数)在node.js环境中的对象是Global,在浏览器环境下是对象是window
    </script>
</head>
<body>

</body>
</html>

定义数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//js数组就是中括号括起来的一组数据
//字面量方式
var arr = [1,23,32,23,23,'DASDD',true];
console.log(arr);

//构造函数方式
var arr1 = new Array(1,2,4,443,3211,4324,true);

//打印类型
console.log(typeof arr);//Object
console.log(arr instanceof Array);//true
//结论;数组既是array类型,也是对象,万物皆对象

//引用类型
var num1 = 100;
var num2 = new Number(100);
console.log(num2 instanceof Object);//true

var str = 'text';
var str1 = new String('text');
console.log(str1 instanceof Object);//true

var  bool = true;
var bool1 = new Boolean(true);
console.log(bool1 instanceof Object);//true

// 笔试题:以下哪个是错误的 D
// A var a = {};// 空对象
// B var b = [];// 空数组
// C var c = //;// 空的正则表达式
// D var d = ();小括号不能单独出现

数组的分类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// 索引数组 - JavaScript默认定义的数组都是索引数组
var arr = [];
  arr[0] = 1;
  arr[1] = 2;
  arr[2] = 'a';
  arr[3] = true;

var arr3 = [1,2,4,3,5,432];

//数组的调用
console.log(arr[0]);

//关联数组
var arr1 = [];
  arr1['name'] = '大鹏';
  arr1['age'] = 19 ;
  arr1['six'] = '男';
  arr1['fun'] = function () {
      return '手速快';
  }

//数组的调用
console.log(arr1['name']);

//构造函数创建数组(推荐用法)
var arr2 = new Array();
arr2['name'] = '小鹏';
arr2['age'] = 18;
//调用key值name的值
console.log(arr2['name']);

// length - 获取当前数组中数据的个数 - 索引数组才能使用
console.log(arr.length);//4
console.log(arr1.length);//0存在(name或key)值是获取不了当前数组的个数
console.log(Object.keys(arr1).length);//4对象方式获取长度
console.log(arr2.length);//0
console.log(Object.keys(arr2).length);//2对象方式获取长度
console.log(arr3.length);//6

// 稀疏数组 - 遍历循环数组时,length属性失效
var arr4 = new Array(10);// 如果参数个数为一个时 -> 表示数组的长度
console.log(arr4);//[ , , , , , , , , ,  ]
arr4[5] = '大大彭';//[ , , , , , '大大彭', , , ,  ]添加的数组在中间出现,key值是5(第六个)
console.log(arr4);

//对象和数组的关系
var obj = {
    name : '大鹏',
    age : 19,
}
console.log(obj instanceof Array);//false
console.log(arr instanceof Object);//true
//结论:数组是对象,但对象不是数组!

操作数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//字面量创建数组
var arr = [1,12342,3232,212,43];

//增加
arr[arr.length] = 'mc大鹏';
console.log(arr);

//修改
arr[3] = '大鹏mc';
console.log(arr);

//删除,后面方法中有涉及
delete arr[0];// delete 只是删除对应位置的数据,而位置保留
console.log(arr);

循环数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//遍历,循环
var arr = [1,12,132321,3213,32131,23131,3];//数组用中括号,对象是大括号

//for语句 - 允许自定义循环的开始和结束位置的
for(var i =0 ;i<arr.length;i++){
    console.log(arr[i]);
}

//for..in语句 - 只能从开始到结束,不能自定义
for(var i in arr){
    console.log(arr[i]);
}

//for..of语句 - ES6版本新增,直接得到值,而不是序号(索引值)
for(var i of arr){
    console.log(i);
}

二维数组

1
2
3
4
5
6
7
8
9
//二维数组的概念就是嵌套数组
var arr = [[1,1,2,3],[3213,321,3213],[32,321,321,32]];

//遍历二维数组
for(var i in arr){//一次性到底遍历数组
    for(var j = 0; j < arr[i].length; j++){//arr[i].length的意思当i是0时arr[i]是一个内嵌数组.length就出长度
        console.log(arr[i][j]);
    }
}

检测数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var arr = [1,2,3,4,5,6,7,8,9,0];

//检测是否是数组
// Array.isArray() - 返回布尔值,true表示为数组,ES5新增的
console.log(Array.isArray(arr));//true

// Array.prototype.isPrototypeOf() - 返回布尔值,true表示为数组
console.log(Array.prototype.isPrototypeOf(arr));//true

/*
 Object.prototype.toString.call()方法
 * Object是构造函数 -> new Object()
 * 构造函数具有prototype原型属性
 * 在原型上,定义一个方法toString()
 * 方法/函数都是Function类型
 * Function提供的方法call()
 * 注意 - 上述用法可以准确判断出当前变量的类型
 */
console.log(Object.prototype.toString.call(null));

进出栈方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var arr  = [12112,212,2321231,23121,444,555];

//push()方法向数组的末尾添加一个或更多元素,并返回新的长度
console.log(arr.push(3231));
console.log(arr);

//pop()方法删除数组的最后一个元素并返回删除的元素
console.log(arr.pop());
console.log(arr);

//shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值
console.log(arr.shift());
console.log(arr);

//unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
//arrayObject.unshift(newelement1,newelement2,....,newelementX)
console.log(arr.unshift('AAA','BBB','CCC'));
console.log(arr);

排序方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var arr = [ 0, 1, 'string',5, 'text',10, 20 ];

//reverse() 方法反转数组的元素顺序。
console.log(arr.reverse());

//sort()对数组的元素进行排序
console.log(arr.sort());//按照首字母排序

// 如何利用sort()方法实现由小到大或由大到小的排序
var arr = [ 0,1,5,10,20 ];
 function fn(a,b) {
     return a < b;
 }
console.log(arr.sort(fn));

操作方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var arr = [1,3,5,7,15,20];

/*
 slice(start, end)方法 - 截取数组
 * start - 表示截取的开始位置
 * end - (可选项)表示截取的结束位置,不包含当前end这个位置的数据
 * 如果默认省略,表示截取到当前数组的最后
 * 如果start和end为负值的话,表示从右向左计算
 */
console.log(arr.slice(1,3));

/*
 arrayObject.splice(index,howmany,item1,.....,itemX)
 splice()方法 - 删除操作
 * index - 表示添加或删除的位置
 * howmany - 表示删除的个数
 * 返回值 - 表示被删除的内容
 * 注意 - 操作原有数组的数据内容
 */
console.log(arr.splice(0,3,2122,32132));
console.log(arr);

//替换操作
console.log(arr.splice(0,1,'大鹏'));
console.log(arr);

位置方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var numbers = [ 1, 2, 3, 4, 5 , 4, 3, 2, 1 ];

// indexOf()方法 -> 从左到右搜索,查找到直接返回
console.log(numbers.indexOf(5));//前一位的值

// lastIndexOf()方法 -> 从右到左搜索,查找到直接返回
console.log(numbers.lastIndexOf(1));//前一位的值

// indexOf()和lastIndexOf()方法 - 搜索内容不存在,返回 -1
if(numbers.lastIndexOf(21) === -1){
    console.log('不存在');
}else {
    console.log('存在');
}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注