Javascript初步

Javascript初步

Introduction

最近了解了一种新的漏洞——原型链污染。了解到原型链污染是一个关于前端js的相关漏洞,OK,那就先来学一下Javascript的基础嘛,后面学完原型链污染再写另一篇。其实Javascript包括另外两大前端语言HTML,CSS在当时开发学院文化节活动网站的时候也接触过(虽然主要负责后端的工作),并且Javascript在某种程度上和C语言很像,所以这一篇内容不会特别详尽。

Javascript数据类型

字符串

Javascript的字符串声明和Python差不多,可以使用单引号或者双引号,如:

1
2
3
4
var string1="Hello World!";
var string2="Hello Javascript!";
console.log(string1);
console.log(string2);

数字

Javascript只有一种数字类型,可以带或不带小数点,如:

1
2
3
4
var num1=1;
var num2=1.00;
console.log(num1);
console.log(num2);

布尔

布尔类型只能有两个值,true或者false,如:

1
2
3
4
var bool1=true;
var bool2=false;
console.log(bool1);
console.log(bool2);

数组

数组的声明

Javascript数组中可以存放任意类型的数据。Javascript声明数组的方法有很多,下面的方法都可以声明(本人更倾向于类似python的声明方法,因为简单哈哈哈),如:

1
2
3
4
5
var array1=new Array();
array1[0]=1;
var array2=[2];
console.log(array1[0]);
console.log(array2[0]);

数组元素的插入

Javascript数组的插入使用push函数:

1
2
3
var array1=[1,2,3];
array1.push(4);
console.log(array1)

或者直接给数组元素赋值:
1
2
3
var array1=[1,2,3];
array1[3]=4;
console.log(array1)

数组元素的删除

删除最后一项使用pop函数:

1
2
3
var array1=[1,2,3];
array1.pop();
console.log(array1)

或者修改数组长度:
1
2
3
var array1=[1,2,3];
array1.length=2;
console.log(array1)

删除任意位置使用splice函数,如下代码表示删除第一项索引为0,删除一项:
1
2
3
var array1=[1,2,3];
array1.splice(0,1);
console.log(array1)

对象

Javascript对象由键值对构成,属性由逗号隔开:

1
2
var object={"name":"等风","age":19};
console.log(object)

也可以这样声明:
1
2
3
4
var object={};
object.name="等风";
object.age=19;
console.log(object)

对象的寻址:
1
2
3
var object={"name":"等风","age":19};
console.log(object.name)
console.log(object)

或者
1
2
3
var object={"name":"等风","age":19};
console.log(object['name'])
console.log(object)

Undefined和Null

Undefined表示变量没有初始值(变量存在但无值)
值得注意的是,在javascript中undefined和null在”==”比较运算符下是一样的:

1
2
3
var a=undefined;
var b=null;
console.log(a==b)

Javascript调试

一般来说调试Javascript代码采用两种调试方法,console.log控制台调试还有断点调试(不建议使用alert,因为会中断)

Javascript原型链

在Javascript中,万物皆对象。
在Javascript中没有类的概念,但是可以通过原型链来达到类继承的目的。

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function info() {
this.name="等风";
this.age=19;
}

function qq() {
this.QQ=1440416491;
}

info.prototype=new qq();

myinfo=new info();

console.log(myinfo.QQ);
//144041491

可以看到上面的info并没有QQ这一成员,但却访问到了QQ,这说明info通过“父类”qq继承到了QQ;同理,qq也可以有自己的父类,这样可以一直“溯源”,直到prototype为null为止。在这里解释一下上面程序运行的结果吧,javascript调用成员先会在自己的对象里面找,如果找不到就去对象的原型里面找,一直这样找,找到就返回,找不到就算了。

Prospect

Javascript的学习暂时就告一段落了(够用就行),过几天再把原型链污染学习一下,然后再来更blog吧hhh

xN4Xan.png