文章目录
一. JavaScript基础
1. JS简介
2. JS编写的位置
(1). 在HTML标签的事件属性中直接添加脚本
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>位置</title>
</head>
<body>
<form>
<input type="button" onclick="javascript:alert('欢迎来到JavaScript世界')" value="点我">
</form>
</body>
</html>
结果:
(2). 使用script标签插入脚本
语法:
<head>
<script>
//在这里放置具体的JavaScript脚本
</script>
</head>
举例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>js位置</title>
<script>
function show(){
alert('欢迎来到JavaScript世界');
}
</script>
</head>
<body>
<form>
<input type="button" onclick="show()" value="点我"/>
</form>
</body>
</html>
(3). 使用script标签链接脚本文件
新建一个脚本文件以.js为扩展名的文件里,然后在需要使用的时候在html页面里面引用该文件
基本语法:
<head>
<script src="脚本文件"></script>
</head>
举例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS引用文件</title>
<script src="link.js"></script>
</head>
<body>
<form>
<input type="button" onclick="show()" value="点击我">
</form>
</body>
</html>
link.js文件
function show(){
alert("欢迎来到JavaScript世界!")
}
3. JS基本语法
(1). 标识符和关键字
(2). 直接量(字面量)和变量
(3). 数据类型
1. 数字类型(Number)
2. 字符串类型
3. 布尔类型
4. null和undefined类型
5. 数据类型转换
6. 对象类型(Object)
基本数据类型缺点:
基本数据类型都是单一的值:"hello" 123 true
值和值之间没有任何的联系
在JS中来表示一个人的信息(name gender age):
var name = “孙悟空”;
var gender=“男”;
var age=18;
如果使用基本数据类型的数据,我们所创建的变量都是独立,不能成为一个整体。
对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性
(1). 对象的分类
JavaScript的内容鸟瞰概述https://zh.javascript.info/browser-environment
1. 内置对象(内建对象)
由ES标准中定义的对象,在任何的ES的实现中都可以使用
ES是国际标准化组织发布的浏览器脚本语言的标准,全名:ECMAScript。
详细的ES和JavaScript的关系https://www.jianshu.com/p/4e178e9ef796
- Math对象
- String对象
- Number对象
- Boolean对象
- Function对象
- Object对象
- Array对象
- Date对象
2. 宿主对象
由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
- BOM对象
- DOM对象
3. 自定义对象
由开发人员自己创建的对象
(2). 对象的基本操作
1. 创建对象
var obj = new Object();
使用new关键字调用的函数,是构造函数constructor
构造函数是专门用来创建对象的函数
console.log(typeof obj);
使用typeof检查一个对象时,会返回object
在对象中保存的值称为属性
向对象添加属性
语法:对象.属性名 = 属性值
对象的属性名不强制要求遵守标识符的规范,但是尽量按规范去
//向obj中添加一个name属性
obj.name = "孙悟空"
//向obj中添加一个gender属性
obj.gender = "男"
//向obj中添加一个age属性
obj.age = 18
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var obj = new Object();
obj.name = "老林"
obj.gender = "男"
obj.age = 88
console.log(obj)
</script>
</head>
<body>
</body>
</html>
此时对象里面有三个属性值
以上方式可能比较麻烦,我们也可以使用对象字面量创建一个对象:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>对象字面量</title>
<script>
//创建一个对象
//var obj = new Object();
/*
使用对象字面量来创建一个对象
*/
var obj = {};
console.log(typeof obj);
obj.name = "老林"
console.log(obj.name);
/*
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值, 属性名:属性值....}
对象字面量的属性名可以加引号也可以不加,建议不加
如果使用一些特殊的名字,则必须加引号
属性名和属性值是一组一组的名值对结构
名和值之间使用:连接,多个名值对之间使用,隔开
如果一个属性之后没有其他的属性了,就不要写,
*/
var obj2 = {
name:"阿飞",
"age":88,
gender:"男",
test:{name:"老林"}
};
console.log(obj2)
</script>
</head>
<body>
</body>
</html>
2. 读取对象中的属性
语法:对象.属性
如果读取对象中没有的属性,不会报错而是会返回undefined
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var obj = new Object();
obj.name = "老林"
obj.gender = "男"
obj.age = 88
//console.log(obj)
console.log(obj.name)
</script>
</head>
<body>
</body>
</html>
如果需要使用特殊的属性名,不能采用.的方式来读取操作
需要使用另一种方式
语法:对象["属性名"] = 属性值,读取时也需要采取这种方式
使用[ ]这种方式去操作属性,更加灵活,在[ ]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
obj["123"] = 789;
obj["nihao"] = "你好"
var n = "nihao"; n的值可以变换
console.log(obj[n]);
3. 修改对象的属性值
语法:对象.属性名 = 新值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var obj = new Object();
obj.name = "老林"
obj.gender = "男"
obj.age = 88
//console.log(obj)
console.log(obj.name)
obj.name = "阿飞"
console.log(obj.name)
</script>
</head>
<body>
</body>
</html>
属性值
JS对象的属性值,可以是任意的数据类型,甚至是一个对象
obj.test = true;
obj.test = null;
obj.test = undefined;
判断一个对象里面是否有某个属性:使用in运算符
如果有返回true ,否则返回false
语法:“属性名” in 对象
console.log("test" in obj);
console.log("name" in obj);
4. 删除对象的属性
语法:delete 对象.属性名
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var obj = new Object();
obj.name = "老林"
obj.gender = "男"
obj.age = 88
//console.log(obj)
console.log(obj.name)
obj.name = "阿飞"
console.log(obj.name)
delete obj.name
console.log(obj.name)
</script>
</head>
<body>
</body>
</html>
7. 基本数据类型和引用数据类型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>基本数据类型和引用数据类型</title>
<script>
/*
基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object
JS中的变量都是保存在栈内存中的,
基本数据类型的值直接在栈内存中存储
值与值之间是独立存在,修改一个变量不会影响其他的变量
对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,
而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象的引用
当通过一个变量修改属性时,另一个也会受到影响
*/
var a = 123;
var b = a;
a++;
console.log("a = "+a);
console.log("b = "+b);
var obj = new Object();
obj.name = "孙悟空"
var obj2 = obj;
console.log(obj.name)
console.log(obj2.name)
//修改obj的name属性
obj.name = "老林"
console.log(obj.name)
console.log(obj2.name)
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>基本数据类型和引用数据类型</title>
<script>
/*
基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object
JS中的变量都是保存在栈内存中的,
基本数据类型的值直接在栈内存中存储
值与值之间是独立存在,修改一个变量不会影响其他的变量
对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,
而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象的引用
当通过一个变量修改属性时,另一个也会受到影响
*/
var a = 123;
var b = a;
a++;
console.log("a = "+a);
console.log("b = "+b);
var obj = new Object();
obj.name = "孙悟空"
var obj2 = obj;
console.log(obj.name)
console.log(obj2.name)
//修改obj的name属性
obj.name = "老林"
// console.log(obj.name)
// console.log(obj2.name)
//设置obj2 = null
obj2 = null;
console.log(obj);
console.log(obj2);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>基本数据类型和引用数据类型</title>
<script>
/*
基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object
JS中的变量都是保存在栈内存中的,
基本数据类型的值直接在栈内存中存储
值与值之间是独立存在,修改一个变量不会影响其他的变量
对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,
而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象的引用
当通过一个变量修改属性时,另一个也会受到影响
*/
var a = 123;
var b = a;
a++;
console.log("a = "+a);
console.log("b = "+b);
var obj = new Object();
obj.name = "孙悟空"
var obj2 = obj;
console.log(obj.name)
console.log(obj2.name)
//修改obj的name属性
obj.name = "老林"
// console.log(obj.name)
// console.log(obj2.name)
var c = 10;
var d = 10;
console.log(c == d);
var obj3 = new Object();
var obj4 = new Object();
obj3.name = "阿飞"
obj4.name = "阿飞"
/*
当比较两个基本数据类型的值时,就是比较值
而比较两个引用数据类型时,它是比较的对象的内存地址,
如果两个对象是一模一样的,但是地址不同,它也会返回false
*/
console.log(obj3==obj4)
</script>
</head>
<body>
</body>
</html>