【前端入门】JavaScript(2)

一、Map和Set

1、Map

用键值对表示,和java的Map类似
get方法取值 set方法修改值 delete方法删除值
所有的方法都是操作键

2、Set

相当于去重数组

var set = new Set([1,2,3,3,3]);

查看一下set,会发现只输出了 [1, 2, 3]

//添加字段
set.add(field);
//删除字段
set.delete(field);

3、遍历

for(let filed in set){
	代码块
}
for(let filed of set){
	代码块
}

这两种类似于增强for的结构,要用下一种(of),如果用了in,遍历出来的就是下标,类似于0,1,2,3……,of遍历出来的就是字段。

二、函数

function 函数名(参数){
	(函数体)
	return 返回值;
} 

这是偏向后端的定义方式,当然还有前端特有的定义方式:

var 函数名 = function(参数){
	(函数体)
	return 返回值;
}
异常

函数体内可以用throw手动抛出异常

arguments

js赠送的参数,代表所有传入的参数汇成的数组。

rest
var method = function(a,b,...rest){
	···
}

可变长参数,必须写在最后面。

三、作用域

1、在方法内部的变量到外面就不能使用了

function method(){
    var x = 1;
    x = x + 1;
}
x = x + 2;//Uncaught ReferenceError: x is not defined

使用的话会报错:Uncaught ReferenceError: x is not defined

2、在js里查找调用的变量的过程,类似于java的双亲委派机制,从内到外查找。如果内外都有某个变量,调用内部的那个。

function a(){
    var x = 1;
    console.log(x);
    function b(){
        var x = 2;
        console.log(x);
    }
    b();
}
a();

方法b内引用了变量x,先从b里找x,找到后用b里的x,而不用b外a内的x。
输出:1 2

function a(){
    var x = 1;
    console.log(x);
    function b(){
        //var x = 2;
        console.log(x);
    }
    b();
}
a();

注释掉b内的x后,输出:1 1

3、window对象
所有的全局变量都会被加入到window对象里。

let关键字

建议使用let关键字定义局部作用域的变量

const(常量)

ES6引入的
用const定义的变量不可再次修改,官方名称叫 只读变量

apply

可以修改this指针的指向

方法A.apply(对象B,参数列表);//空参列表是[]

这样,方法A的this指针就指向了对象B。
类似于java反射中的invoke()方法

四、内部对象

通过typeof可以知道对象的类型

typeof 123;
//"number"
typeof '123';
//"string"

1、Date

常用方法:

var date = new Date();
var year = date.getFullYear();//年
var month = date.getMonth();//月 0~11
var date_of_month = date.getDate();//日
var day = date.getDay();//星期几
var hour = date.getHours();//时
var minutes = date.getMinutes();//分
var second = date.getSeconds();//秒
var time = date.getTime();//时间戳

时间戳可以作为Date()方法的参数,以获取更准确的时间。

2、JSON

格式:

  • 对象都用 { }
  • 数组都用 [ ]
  • 所有的键值对都用 key:value

对象 转 json字符串:

var json对象 =  JSON.stringify(js对象);

json字符串 转 对象:

var js对象 = JSON.parse(json对象);
//由于json对象的本质是字符串,所以传参的时候可以直接传json对象的内容,用''或""包起来

五、类

用class定义类,实例化和继承方法和java一样。构造器是constructer

class Father{
    constructor(name) {
        this.name = name;
    }
    say(){
       alert(this.name);
    }
}

class Son extends Father{
    constructor(name) {
        super(name);
    }
    say() {
        super.say();
    }
}

var p1 = new Father("dad");
var p2 = new Son("baby");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手且笨蛋37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值