超详细的JavaScript

本文介绍了JavaScript的基本概念,包括它的交互性、安全性和跨平台性。详细讲解了变量的声明和类型、关系比较和逻辑运算。接着深入探讨了数组的定义和方法,函数的定义方式、作用域以及this关键字的用法。此外,还讨论了自定义对象、原型对象和事件处理,如onclick和onload事件的绑定。
摘要由CSDN通过智能技术生成

目录

一、javaScript介绍

二、JavaScript使用

三、变量

四、关系比较运算

五、逻辑运算

 五、数组

 六、函数

1.函数的定义方式

 2.函数的作用域

 3.变量声明提前

 4.this关键字

七、自定义对象

1.Object 对象

2.自定义对象

 3.匿名函数

 比较数据

八、js中的事件

1.事件定义

2.常见的事件

3.事件的注册 



一、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对象中的方法介绍

节点属性和方法

节点就是标签对象

方法:

 属性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值