JavaScript 中的面向对象编程、DOM操作

Math对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>JS中的内置对象</title>
		<meta http-equiv="refresh" content="2" />
		<script type="text/javascript">
			//var mess=prompt('请输入表达式:','a');
			//alert(mess);
			//内置函数eval() 计算表达式的值
			//var value=eval(mess);
			//alert(value);
			//isNaN():表示的是  是否是  非数字的值
//			var value=parseInt(mess);
            //判断是非数字  
//			if(isNaN(value)){ 
//				alert('是一个非数字的值');
//			}else{
//				alert('不是非数字');
//			}
			//Math对象
			//random() 随机产生0-1之间的数值
            //round()  四舍五入
			//随机出0-5之间的整数
			//alert(Math.round(Math.random()*5));
			//随机出1-5之间的整数
		    alert(Math.round(Math.random()*4+1));
		</script>
	</head>
	<body>
		
	</body>
</html>

Date对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Date日期对象</title>
		<script type="text/javascript">
//			获取当前时间
			var dateTime=new Date();
			//getHours():获取小时
			//alert(dateTime.getHours());
//			getMinutes():获取分钟
			//alert(dateTime.getMinutes());
			//getMonth(): 获取月份 但是取值为0-11
//			/alert(dateTime.getMonth()+1);
//          getFullYear():获取年份
//			alert(dateTime.getFullYear());
		</script>
	</head>
	<body>
	</body>
</html>

JavaScript 面向对象编程

面向对象是一种解决问题的思路,一种编程思想。
万事万物都是对象,在 JavaScript 中,所谓的对象,就是键值对的集合。
案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			window.function(){
//				用id的方法获取页面中的元素
//				var div1=document.getElementById('div1');
//				用classname的方法获取页面中的元素
//				var div2=document.getElementsByClassName('div2');
//				用标签的名称获取页面中的元素
//				var p1=document.getElementsByTagName('p');
//				用name的方法获取页面中的元素
//				var div3=document.getElementsByName('name');
				//第一种方式:传统的方式
//				div1.style.border='1px solid red';
//				div1.style.width=200+'px';
//              div1.style.height=200+'px';
				//第二种方式: 函数的方式   作用:对于相同的代码块进行封装
//				function getById(id){  
//					return document.getElementById(id);
//				}
//				function setStyle(Ele){
//					Ele.style.border='1px solid red';
//					Ele.style.width=200+'px';
//					Ele.style.height=200+'px';
//				}
//				var div1= getById('div1');
//				setStyle(div1);
				//面向对象的方式设置元素的样式
				var inlett={
					getEle:{
						byId:function(id){
							return document.getElementById(id);
						},
						byClass:function(clas){
							return document.getElementsByClassName(clas);
						}
					},
					setStyle:{
						setCss:function(Ele){
								Ele.style.border='1px solid red';
								Ele.style.width=200+'px';
								Ele.style.height=200+'px';
						}
					}
				};
				var div1= inlett.getEle.byId('div1');
				inlett.setStyle.setCss(div1);
			}
		</script>
	</head>
	<body>
		<div id="div1">1</div>
		<div class="div2">2</div>
		<p>2019</p>
		<input name="name" type="button" value="2019" />
	</body>
</html>

Object 对象

						var person = new Object();
						person.name = 'My Name';
						person.age = 18;
						person.getName = function(){
						    return this.name;
						}

对象字面量方式

						var person = {
							name : 'My name',
							age : 18,
							getName : function(){
									return this.name;
							}
						}

面向对象的三大特征

封装性

对象是将数据与功能组合到一起, 即封装
(1)js 对象就是 键值对的集合
键值如果是数据( 基本数据, 复合数据, 空数据 ), 就称为属性
如果键值是函数, 那么就称为方法
(2)对象就是将属性与方法封装起来
(3)方法是将过程封装起来

继承性

让某个类型的对象获得另一个类型的对象的属性的方法

多态性

不同的类可以定义相同的方法或属性。

对象(类)的创建

在 JavaScript 中,我们通常可以使用构造函数来创建特定类型的对象
以这种方式调用构造函数实际上会经历以下 4 个步骤:
(1)创建一个新对象(实例)
(2)将构造函数的作用域赋给新对象(也就是重设了 this 的指向,this 就指向了这个新对象)
(3)执行构造函数中的代码(为这个新对象添加属性)
(4)返回新对象

JavaScript 中的 DOM 操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			window.function(){
			    //常用的访问 HTML 元素的方法
				//通过getElementById()方法
				//var div1=document.getElementById('div1');
				//通过getElementsByClassName()方法
				//var div2=document.getElementsByClassName('div2');
				//通过getElementsByName()方法
				//var div3=document.getElementsByName('name');
				//通过getElementsByTagName()方法
				//var p1=document.getElementsByTagName('p');
				//常用的操作元素节点的增、删、改、及重置所在位置的方法
				//1)appendChild()方法:把新的子节点添加到指定节点。
//				    var span1=document.getElementById('span');
//				    var div1=document.getElementById('div1');
//				    var p1=document.getElementById('p');
//				    div1.appendChild(span);
				//2)removeChild()方法:删除子节点。
//				    div1.removeChild(p1);
				//3) replaceChild()方法:替换子节点。
//				    div1.replaceChild(span1,p1);
				//4) insertBefore()方法:在指定的子节点前面插入新的子节点。
//				    div1.insertBefore(p1,span1); 
//              常用的创建元素属性、节点、文本及获取、修改属性值方法
//              1.createElement()方法:创建元素节点。
//                  var div2=document.createElement('div');
//					document.getElementsByTagName('body')[0].appendChild(div2);
//              2.createTextNode()方法:创建文本节点。
//                  var textNode=document.createTextNode('2019');
//					div2.appendChild(textNode);
//              3.createAttribute()方法:创建属性节点
//					var attribute=document.createAttribute('id');
//					attribute.value='div2';
//					alert(attribute);
//              4.getAttribute()方法:返回指定的属性值。
//					div2.setAttributeNode(attribute);
//					span1.innerHTML=div2.getAttribute('id');
//              5.setAttribute()方法:把指定属性设置或修改为指定的值。
//					div2.setAttribute('id','div_02');
//				常用的 HTML DOM 属性
//				(1) innerHTML 属性: 设置或返回表格行的开始和结束标签之间的 HTML
//				(2) parentNode 属性:以 Node对象的形式返回指定节点的父节点;如果指定节点没有父节点,则返回 null。
				//将p标签的父节点对象显示到span中
//	 			span1.innerHTML=p1.parentNode;
				//将p标签的父节点名称显示到span中
//				span1.innerHTML=p1.parentNode.nodeName;
//				) childNodes 属性:返回节点的子节点集合,以 NodeList 对象
				//返回子节点集合
				//var nodeList= div1.childNodes; 
				//返回[object NodeList]
				//alert(nodeList);
				//返回text文本节点
				//alert(nodeList[2].nodeName);  
//				(4) attributes 属性: 返回指定节点的属性集合,即 NamedNodeMap
				//alert(div1.attributes.length);
//				(5) nodeName 属性: nodeName 属性指定节点的节点名称。
				//alert(div1.attributes[2].nodeName);
//				(6) nodeValue 属性: 设置或返回指定节点的节点值
				alert(div1.attributes[2].nodeValue)
			}         
		</script>
	</head>
	<body>
		<span id="span">span</span>
		<div id="div1">div
			<p id="p">段落</p>
		</div>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_43750162/article/details/87812148