zoukankan      html  css  js  c++  java
  • 前端day12 作用域 作用域链 闭包 JS块状作用域 JS对象和构造函数 JS原型和原型链 JS-Object对象 JS获取页面中元素-给元素添加事件-设置元素样式 JS使用技巧-获取元素-设置样式-定时器

    2.1构造函数和对象

    构造就是类

    function User([参数]){

      this.属性=值;

      this.属性=值;

      this.方法=function(){

      }

    }

    #实例一个对象

    new 构造函数();

    如果构造函数没有参数 可以 不加()

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>类和对象</title>
    </head>
    <body>
    	<h1>类(构造函数)和对象</h1>
    	<script>
    		//构造函数就是类
    		//定义一个 构造函数 跟函数 一模一样
    		function User(name,age){
    			this.userName=name;   				//userName相当于创建属性  name和age是传进来的值
    			this.userAge=age;
    
    			//声明一下对象的方法
    			this.getInfo=function(){
    				console.log('姓名:'+this.userName+',年龄:'+this.userAge+'<br>')
    			}
    		}
    		//实例化对象
    		var a =new User('小芳',17);
    		console.log(a);
    
    		//使用对象的属性
    		console.log(a.userName);
    		console.log(a.userAge);
    
    		//调用对象的方法
    		a.getInfo();
    		//一个构造函数(类) 能够实例化成多个对象 
    		var b =new User('小红',18);
    	</script>
    </body>
    </html>
    

    2.2 JS原型和原型链

    原型

    每个对象都有原型(原型仍然是一个对象)

    对象可以继承原型的属性和方法

    __proto__没有对象都有改属性

    原型链

    原型作为对象也有原型

    原型的原型的原型 就构成了 原型链

    使用对象中某个属性的时候,先从对象中找,如果没有,从原型上找,原型如果也没有,继续向上找

    直到顶层(顶层的原型对象是一个类型(类)(构造函数)是object的对象)

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>原型</title>
    </head>
    <body>
    	<h1>同志交友</h1>
    	<hr>
    	<script>
    		function User(){  //原型相当于父类
    			this.name='小丽丽';
    		}
    		let u =new User();
    
    		console.log(u);
    		console.log(u.__proto__)
    		console.log(u.__proto__.__proto__)
    		console.log(u.__proto__.__proto__.__proto__)
    
    		console.log(u.name)
    		console.log(u.toString);//来自原型
    
    		//再定义一个对象 object是系统内置的构造函数
    		var a=new object();
    		a.__proto__ =u;
    
    		console.log(a)
    		console.log(a.name)
    
    		//__proto__该属性指向该对象的原型
    
    	</script>
    </body>
    </html>
    

    2.3JS对象属性的调用

    obj.name

    obj.age

    []

    obj['name']

    obj['age']

    obj['user-name']

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Object</title>
    </head>
    <body>
    	<script>
    		
    		//系统内建的构造函数 Object
    		var o = new Object();
    
    
    		//创建好对象之后,再给对象添加属性和方法
    		o.name = '小丽丽';
    		o.age = 10;
    		o.getInfo = function(){
    			console.log(this.name, this.age)
    		}
    
    		console.log(o)
    		console.log(o.name)
    		console.log(o.age)
    		o.getInfo()
    
    
    
    		var o1 = new Object();
    		//o1.__proto__ = o;
    
    		console.log(o1);
    
    		console.log('');
    
    
    		//实例化一个 Object类 的对象   简写
    		// python的key这里叫属性
    		var data = {'name':'小丽丽', age:19, address:'上海', getInfo:function(){
    			console.log('getInfo');
    		}}; //python的字典
    		data.grade = '11';
    
    		console.log(data.constructor);
    		console.log(data);
    		console.log(data.name);
    		data.getInfo();
    
    
    
    		//声明对象的时候 属性可以不加引号。 但是有些情况必须要加(属性名)
    		var content = {
    			name: '小芳',
    			age:100,
    			'user-name':'丽丽',
    			user_name:'大丽丽'
    		};
    		console.log(content);
    
    		//调用属性
    		console.log(content.name)
    		console.log(content.user_name)
    		console.log(content['user-name'])
    		console.log(content['name'])
    
    		//所有的属性 都可以通过 [] 调用
    		var b = 123;
    		console.log(b['constructor'])
    
    
    
    
    
    
    	</script>
    </body>
    </html>
    

    总结语法:类与类之间是不能继承的  对象与对象之间是可以继承的    对象与对象之间继承称之为原类 o1.__proto__=o;  //o1的原型是o

    constructor到底是什么?就为看一下他的构造函数是怎么样的。

    2.4object构造函数

    js内建的构造方法叫object

    var obj =new object()

    josn方式定义对象 

    var obj={属性:值,属性:值} //new object的简写

    object的构造含的是object

    3.实用技巧

    3.1从页面获取元素

    document.getElementById() 根据ID的值 #获取的是元素对象
    document.getElementsByTagName() 根据标签名 #多了s说明获取由元素对象组成的类数组对象
    document.getElementsByClassName() 根据class的值 #多了s说明获取由元素对象组成的类数组对象
    document.getElementsByName() 根据name属性的值 #多了s说明获取由元素对象组成的类数组对象

    上述只是作为了解一般用下面这种 

    document.querySelector(css选择器)
    document.querySelectorAll(css选择器)

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>获取页面元素</title>
    </head>
    <body>
    	<h1>同志交友</h1>
    	<hr>
    
    	<ul class="news-list">
    		<li><a href="#">long time no see so i can not say something</a></li>
    		<li><a href="#">long time no see so i can not say something</a></li>
    		<li><a href="#">long time no see so i can not say something</a></li>
    		<li><a href="#">long time no see so i can not say something</a></li>
    		<li><a href="#">long time no see so i can not say something</a></li>
    	</ul>
    	<div id="box"></div>
    
    	<script>
    		var boxEle=document.querySelector('#box');
    		console.log(boxEle);  //这个就是输出元素的特性会把样子进行输出
    		console.dir(boxEle);
    		var li=document.querySelector('.news-list li');
    		console.log(li);
    		li.innerHTML = '哈哈哈,我是第一个'; //innerHTML重新给标签里面里面赋值
    
    		//获取所有li元素
    		var lis =document.querySelectorAll('.news-list li');
    
    		//console.log(lis);
    
    	</script>
    </body>
    </html>
    

    3.2给元素绑定事件

    先获取元素

    ele.onclick=function(){

    }

    获取元素的类数组对象,遍历挨个给每个元素绑定事件

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>给元素绑定事件</title>
    	<style>
    		.list{
    			list-style: none;
    			padding: 0;
    			margin: 0;
    			 600px;
    		}
    		.list li{
    			padding: 10px;
    			margin: 5px 0px;
    			border: 1px solid red;
    		}
    		#btn {
    			border: 1px solid #ccc;
    			padding: 10px 20px;
    			background: #f5f5f5
    
    		}
    		
    	</style>
    </head>
    <body>
    	<h1>同志交友</h1>
    	<hr>
    	<button id="btn">点我</button>
    	<ul class="list">
    		<li>long time no see i can say no</li>
    		<li>long time no see i can say no</li>
    		<li>long time no see i can say no</li>
    		<li>long time no see i can say no</li>
    		<li>long time no see i can say no</li>
    		<li>long time no see i can say no</li>
    	</ul>
    	<script>
    		//要给btn绑定元素
    		var btn=document.querySelector('#btn');
    		//绑定事件
    		btn.onclick=function() {
    			this.innerHTML='好疼';
    		}
    		//给每个li元素都绑定事件
    		var lis=document.querySelectorAll('.list li')
    		//遍历,给每个元素绑定事件
    		for (let i=0;i<lis.length; i++){   //循环8次就不是全局的了  let是局部的不是全局的
    			lis[i].onclick=function(){
    				//this表示 目前点的这个元素
    				this.innerHTML='我被点了';   //var和let
    				// lis[i].innerHTML='我被点了' //被点的话lis[8] for循环早执行完了 
    			}
    		}
    	</script>
    </body>
    </html>
    

    前端element神器 谷歌浏览器

  • 相关阅读:
    学习总结
    HBase简要介绍
    分布式文件系统HDFS
    Hadoop基础安装和使用
    大数据的学习基础
    学习总结
    Python-爬取豆瓣电影信息并存到mysql
    python爬虫回顾与总结
    正则表达式-爬虫获取豆瓣电影超链接
    BeautifulSoup相关学习
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9508970.html
Copyright © 2011-2022 走看看