目录
一、javaScript介绍
Javascript语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行JavaScript 代码。
JS是Netscape网景公司的产品,最早取名为LiveScript;为了吸引更多java程序员。更名为JavaScript。
JS是弱类型,Java 是强类型。
特点
1.交互性(它可以做的就是信息的动态交互)
2.安全性 (不允许直接访问本地硬盘)
3. 跨平台性(只要是可以解释JS的浏览器都可以执行,和平台无关)
二、JavaScript使用
1.html文件中直接引用
<head>
<meta charset="utf-8">
<title>JS联系</title>
<script type="text/javascript">
alert("欢迎来到我的世界")
</script>
</head>
2.引入外部文件
<head>
<meta charset="utf-8">
<title>JS联系</title>
<script type="text/javascript" src="../js/06.test.js"></script>
</head>
运行结果:
三、变量
具体实例:
<script type="text/javascript">
// alert("欢迎来到我的世界")
var i; // alert(i) //undefined
i=12; //alert(typeof(i)) //number
// typeof()是JavaScript中提供的函数,返回数值的类型
i="abc"; //它可以取变量的数据类型返回
// typeof(i); //String
var a=13;
var b="abc";
alert(a*b); //NaN
</script>
四、关系比较运算
具体实例:
五、逻辑运算
五、数组
1.数组的定义
2.数组常用方法
/**
* push()
* -该方法可以向数组的末尾添加一个或者多个元素,并返回数组的新长度
* -可以将要添加的元素作为方法的参数传递,
* 这样这些元素将会自动添加到数组的末尾
* pop() 删除最后一个元素
* concat() 连接两个或者更多的数组,并返回结果
* join() 把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分割
* reverse() 颠倒数组中元素的顺序
* shift() 删除并返回数组的第一个元素
* slice() 从某个已有的数组返回选定的数组
* sort() 对数组进行排序
* splice() 删除元素,并向数组添加新元素
* toSource() 返回该对象的源代码
* toString() 把数组转换为字符串,并返回结果
* unshift() 向数组的开头添加一个或者更多元素,
* 并放回新的长度
* valueOf() 返回数组对象的原始值
*/
六、函数
1.函数的定义方式
函数的第一种定义方式
<script type="text/javascript">
// 无参函数
function fun1(){
alert("定义了一个无参函数")
}
// 有参函数
function fun2(a,b){
alert("a-->"+a+",b-->"+b);
}
// fun2(1,"abc");
// 有返回值函数
function fun3(num1,num2){
var result=num1+num2;
return result;
}
alert(fun3(13,12));
</script>
函数的第二种定义方式
// 函数的第二种定义方式
var fun4=function(num1,num2){
var result=num1+num2;
return result;
}
alert(fun4(11,12));
2.函数的作用域
作用域指一个变量的作用范围
* -在JS中一共有两种作用域:
* (1)全局作用域
* -直接编写在script标签中的JS代码,都在全局作用域
* -全局作用域在页面打开时创建,在页面关闭时销毁
* -在全局作用域中有一个全局对象window
* 他代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用
* -在全局作用域中,创建的变量和函数会作为window对象的属性保存着
* (2)函数作用域
* -调用函数时创建了函数作用域,函数执行完毕以后,函数作用域销毁
* -每调用一次函数就会创建一个新的函数作用域,他们之间是会互相独立的
* -在函数作用域中可以访问到全局作用域的变量
* 在全局作用域中无法访问到函数作用域的变量
* -当在函数作用域操作一个变量时,他会先在自身作用域中寻找,如果有就直接使用
* 如果没有则向上一级作用域中寻找,直到找到全局作用域,
如果全局作用域中依然没有找到,则会报错ReferenceError
-在函数中访问全局变量可以使用window对象
3.变量声明提前
/**
* 变量声明提前
* -使用var关键字声明变量,会在所有的代码执行前被声明
* 它会在所有的代码执行之前被创建,所以我们可以在函数声明前来调用
* -使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
*
*/
4.this关键字
/**
* 解析器在调用函数每次对向函数内部传递进一个隐含的参数,
* 这个隐含的参数就是this,this指向的是一个对象,
* 这个对象我们称为函数执行的上下文对象,根据函数的调用方式不同,
* this会指向不同的对象
* 1.以函数的形式调用this,永远都是window
* 2.以方法的形式调用时,this就是调用方法的那个对象
*/
以函数形式调用this
function fun(){
console.log(this);
document.write(this);
}
// fun();
// console.log("de");
// 创建一个对象
var arr={
name:"孙悟空",
sayName:fun
};
console.log(obj.sayName==fun);
//arr.sayName();
fun();
运行结果
以方法形式调用this
function fun(){
console.log(this);
document.write(this);
}
// fun();
// console.log("de");
// 创建一个对象
var arr={
name:"孙悟空",
sayName:fun
};
console.log(arr.sayName==fun);
arr.sayName();
// fun();
运行结果
七、自定义对象
1.Object 对象
对象的分类:
1.内建对象由ES标准定义的对象,在任何的ES的实现中都可以使用
比如:Math String Number Boolean Function Object....
2.宿主对象:由JS的运行环境提供的对象,目前来讲主要是指由浏览器提供的对象
比如:BOM DOM\
2.自定义对象
Object形式自定义对象
举例:
<script type="text/javascript">
var obj=new Object();
obj.name="六";
obj.age=18;
obj.hooby="baseball"
//删除属性
delete obj.hobby;
obj.fun=function(){
alert("name:"+this.name+", age:"+this.age);
}
/**
* 函数也可以称为对象的属性:
* 如果一个函数作为一个对象的属性保存
* 那么我们称这个函数时这个对象的方法
* 调用函数就说调用该对象的方法
*/
obj.fun();
</script>
{}大括号形式自定义对象
举例:
obj.fun();
var obj2={
name:"eliauk",
hobby:"baseball",
test:function(){
console.log(obj2);
}
}
obj2.test();
3.匿名函数
// 2.匿名函数
(function(){
// alert("我是一个匿名函数~~~~");
console.log("我可是一个匿名函数嘞!不用调用我就会运行的嘞")
})();
比较数据
当比较两个基本数据类型的值时,就是比较值
而比较两个引用基本数据类型时·,它是比较的对象的·内存地址
储存空间分为 栈内存 和 堆内存
基本变量是存储在栈内存当中的,堆内存中存储着对象
构造方法
/**
* 创建一个构造函数,专门用来创建Person对象的
* 构造函数就是一个普通的函数,创建方法和普通函数没有区别
* 不同的是构造函数首字母要大写
*
* 构造函数和普通函数的区别就是调用方式的不同
* 普通函数是直接调用,而构造函数需要使用new关键字来调用
*
* 构造函数的执行流程:
* 1.立即创建一个新的对象
* 2.将我们新建的对象设置为函数this
* 3.执行我们函数中的代码
* 4.将新的对象作为返回值返回
*
* 使用同一类构造函数产检的对象,是同一类对象
*/
实例:
function Person(name,age){
// alert(this)
this.name=name;
this.age=age;
this.sayName=function(){
alert(this.name);
}
}
// 构造函数(去掉一个new就是普通函数)
var per=new Person("孙悟空",16);
var per2=new Person("猪八戒",14);
console.log(per);
// console.log(per2);
/**
* 使用instanceof可以见查看一个对象是否是一个类的实例
* 语法: 对象instanceof 构造函数
*/
console.log(per instanceof Person);
运行结果:
原型对象
/**
* 原型 prototype(类似于JAVA中父类对象)
* 1.我们所创建的每一个函数,解析器
* 都会向函数中添加一个函数prototype
* 这个属性对应着一个对象,这个对象就是我们所谓的原型对象
* 2.如果函数作为普通函数调用prototype没有任何作用
* 3.当函数以构造函数的形式调用时,它所创建的对象中会有一个
* 隐含的属性,指向该构造函数的原型对象,我们可以通过_proto_来
* 访问该属性
* 4.原型对象就相当于一个公共的区域,所有同一个类的实例都可
* 以访问到这个原型对象,我们可以将对象共有的内容,
* 统一设置到原型对象中
* 5.以后我们创建构造函数时,可以将这些对象共有的属性和方法,
* 统一添加到构造函数的原型对象中,这样不用分别为每一个对象
* 添加,也不会印象到全局作用域,就可以使每一股份对象都具有
* 这些属性和方法了
*
* 6.原型对象也是对象,所以它也是有原型,
* 当我们使用一个额对象的属性或者方法时,会出现在自身中寻找,
* 自身中如果有,则直接使用,
* 如果没有则去原型对象中寻找,如果原型对象中与,则使用,
* 如果没有则去原型中寻找,直到找到Object对象的原型,Object对象的原型,
* 如果在Object中依然没有找到,则返回undefined
*/
实例:
function Person(){
}
function MyClass(){
}
MyClass.prototype.say="我是MyClassl类原型对象的属性";
var myClassOne=new MyClass();
console.log(myClassOne);
console.log(MyClass.prototype==Person.prototype)
console.log(myClassOne.say);
// 使用in 检查对象中是否含有某个属性时,如果对象中没有但是
// 原型中有,也会返回true
console.log("say" in myClassOne);
// 可以使用对象的hasOwnOrioerty()来检查对象自身中是否含有属性
console.log(myClassOne.hasOwnProperty("age"));
/**
* 原型对象也是对象,所以它也是有原型,
* 当我们使用一个对象的属性或者方法时,会先在自身中寻找,
* 自身中如果有,则直接使用,
* 如果还没则去原型对象中寻找,如果原型原型对象中域,则使用使用,
* 如果没有则去原型中寻找
*/
console.log("测试原型对象中有没有该属性");
console.log(myClassOne.__proto__.hasOwnProperty("age"));
// 查看有多少层的原型
console.log("myClassOne.__proto__");
console.log(myClassOne.__proto__)
console.log(myClassOne.__proto__.__proto__)
console.log(myClassOne.__proto__.__proto__.__proto__)
运行结果:
toString方法
function Person(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
}
// 创建一个Person实例
var per=new Person("孙悟空",18,"man");
console.log(per);
// 验证toString方法是不是在该对象原型中
console.log(per.__proto__.__proto__.hasOwnProperty("toString"))
// 如我们希望在输出对象时不输出[object Object],
// 可以为原型对象修改toString()方法
Person.prototype.toString = function(){
return "我是一个快乐的小Person";
}
document.write(per);
运行结果
八、js中的事件
1.事件定义
什么是事件?事件是电脑输入设备与页面进行交互响应,我们称为事件。
2.常见的事件
onclick点击事件
<script type="text/javascript">
function onloadFun(){
alert("静态注册onload事件")
}
// onload事件动态注册,是固定写法
// window.onload=function(){
// alert("动态注册的onload事件");
// }
// 静态绑定事件
function onclickFun(){
console.log("静态注册onclick事件");
}
// 动态绑定按钮
window.onload=function(){
// document 指的是整个页面
var btnobj=document.getElementById("btn2");
btnobj.onclick=function(){
alert("onclick动态绑定事件");
}
}
</script>
</head>
<body>
<button onclick="onclickFun();">按钮一</button>
<button id="btn2">按钮二</button>
</body>
onblur事件
<script type="text/javascript">
function onblurFun(){
// console 是JavaScript语言提供,专门用来向
// 浏览器的控制台打印输出,用于测试使用
console.log("静态绑定onclur事件");
}
// 动态绑定
window.onload=function(){
var inputObj=document.getElementById("ipt01");
inputObj.onblur=function(){
alert("动态绑定onblur");
}
}
</script>
<body>
用户名:<input type="text" onblur="onblurFun()"/><br />
密码:<input type="text" id="ipt01"/><br>
</body>
onchange事件
function onchangeFun(){
console.log("静态绑定onchange事件");
}
// 动态绑定
window.onload=function(){
var onchangeObj=document.getElementById("sel02");
onchangeObj.onchange=function(){
alert("onchange动态绑定事件");
}
}
实例
下拉列表:
<select id="sel01" onchange="onchangeFun()">
<option></option>
<option value="China">China</option>
<option value="USA">USA</option>
<option value="US">US</option>
</select>
<select id="sel02">
<option></option>
<option>China</option>
<option>USA</option>
<option>US</option>
</select>
onsubmit 事件
// script部分代码
// 发现提交的表单不合法,阻止表单提交
function onsubmitFun(){
console.log("onsubmit静态绑定事件")
return false;
}
// 动态绑定
window.onload=function(){
var onsubmitObj=document.getElementById("form02");
onsubmitObj.onsubmit=function(){
console.log("onsubmit动态绑定事件")
return false;
}
}
// body部分代码
<hr />
<form action="http://localhost:8080" method="post">
<button type="submit">正常情况提交</button>
</form>
<form action="http://localhost:8080" method="post" onsubmit="return onsubmitFun()">
<button type="submit">静态提交</button>
</form>
<form action="http://localhost:8080" method="post" id="form02">
<button type="submit">动态提交</button>
</form>
3.事件的注册
定义
其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或者事件绑定。
事件的注册(绑定)分为静态注册事件和动态注册事件
静态注册(绑定)
<script type="text/javascript">
function onloadFun(){
alert("静态注册onload事件")
}
</script>
</head>
<body onload="onloadFun();">
</body>
动态注册(绑定)
<script type="text/javascript">
function onloadFun(){
alert("静态注册onload事件")
}
// onload事件动态注册,是固定写法
window.onload=function(){
alert("动态注册的onload事件");
}
</script>
</head>
<body>
</body>
DOM对象
1.DOM定义
DOM全称为 Document Object Model 文档对象模型。简单理解就是把文档中的标签、属性、文本等转换成为对象进行管理
html对象化
2.Document对象中的方法介绍
节点属性和方法
节点就是标签对象
方法:
属性: