HTML笔记

JS

外部引用

<link rel="stylesheet" type="text/css" href="地址" />

内部

<style type="text/css">

引入4.5 bootstrap

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.0/dist/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">

	<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.0/dist/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>

</style>

在页面中直接写入

<script type="text/javascript">js代码</script>。

在页面中引入外部文件

<script src="地址"></script>

transition过渡 希望把效果添加到哪个 CSS 属性上效果的时长
transform旋转 格式transform rotate(数字deg)

标签描述了基本的链接地址/链接目标,该标签作为HTML文档中所有的链接标签的默认链接: //带图片的标签

js基本类型

number string boolean undefind null

引用数据类型

object function

区别 栈内存 堆内存

typeof基本

instanceof引用

getElementById() 是多个 JavaScript HTML 方法之一。
alert() 警告框
 innerHTML 修改内容

 console.log() 浏览器控制台
JavaScript 使用 var 关键词来声明变量。= 号用于为变量赋值。

构造变量名称(唯一标识符)的通用规则是:

名称可包含字母、数字、下划线和美元符号
名称必须以字母开头
名称也可以 $ 和 _ 开头(但是在本教程中我们不会这么做)
名称对大小写敏感(y 和 Y 是不同的变量)
保留字(比如 JavaScript 的关键词)无法用作变量名称

构造函数

var fun new function(“a”,“b”,“return,a+b”)

变量提升 全局环境 函数环境

js 预解析

var/function会进行定义

var a只定义不赋值

function既定义且赋值

命名函数 function sum(){}

匿名函数var sum = func(){}

嵌套函数

function fn(){

	return function fn1(){

	}

}


自调用函数

(function(){})

function sum(){

	console.log(arguments)

}

sum(1,2)//<u>获取参数arguments 不是一个真正的数组 怎么转换成真实的数组

将arguments转换成数组的方法

将函数里的arguments,转换成一个真正的数组的方法,arguments是个类数组,除了有实参所组成的类似数组以外,还有自己的属性,如callee,arguments.callee就是当前正在执行的这个函数的引用,它只在函数执行时才存在。因为在函数开始执行时,才会自动创建第一个变量arguments对象。

一、arguments这个类数组

1. 它将实参以数组的形式保存着,还可以像数组一样访问实参,如arguments[0];
2. 它也有自己独特的属性,如:callee,
3. 它的长度是实参的个数。补充:那arguments.callee.length又是什么呢?arguments.callee是当前正在执行的函数的引用,类似function.length,那就是形参的个数。

二、将arguments转换为真正的数组的方法

1. Array.prototype.slice.apply(arguments)这是运行效率比较快的方法(看别人资料说的),为什么不是数组也可以,因为arguments对象有length属性,而这个方法会根据length属性,返回一个具有length长度的数组。若length属性不为number,则数组长度返回0;所以其他对象只要有length属性也是可以的哟,如对象中有属性0,对应的就是arr[0],即属性为自然数的number就是对应的数组的下标,若该值大于长度,当然要割舍啦。
2. Array.prototype.concat.apply(thisArg,arguments)。,thisArg是新的空数组,apply方法将函数this指向thisArg,arguments做为类数组传参给apply。根据apply的方法的作用,即将Array.prototype.slice方法在指定的this为thisArg内调用,并将参数传给它。用此方法注意:若数组内有数组,会被拼接成一个数组。原因是apply传参的特性。
3. 我自己想了个方法,利用Array的构造函数,如Array(1,2,3,4,5,6);可以返回一个传入的参数的数组,那Array.apply(thisArg,arguments)也可以将arguments转化为数组,果然实验是可以的;有没有什么影响呢,就是乱用了构造函数,但这也是js的特性嘛。构造函数也是函数。用此方法注意:若数组内有数组,会被拼接成一个数组。原因是apply传参的特性。
4. 用循环,因为arguments类似数组可以使用arguments[0]来访问实参,那么将每项赋值给新的数组每项,直接复制比push要快,若实参有函数或者对象,就要深拷贝。

 

三、综上所述,最完美的方法应该是Array.prototype.slice.apply(arguments)了

执行上下文

function a(){

	b()

}

function b(){

 c()

}

function c(){

console.log(“Hello word”)

}

a()

stack栈的意思

数组

定义:var arr = 【】;

var arr1 = new array()

向尾部追加push("张三")

像头部追加unshift(“李四")

头部删除shift()

删除尾部pop()

连接数组 concat

插入splice(起始下标,删除个数,替换的元素)删除 替换

slice(起始位置,结束位置) 数组的截取

数组的排序 sort a-b升序 b-a降序

数组的定位 indexof如果数组中存在 则返回其下标 否则返回-1

indexof从后往前 lastindexof从前往后

ES6新增的数组方法

find(function(n){})寻找 如果符合条件的结果返回这个值

var arr = [1,2,3,-1]
var res = arr.find(function(n){
	return n <0
})
console.log(res)//-1

findIndex如果符合条件的结果返回这个下标

var arr = [1,2,3,-1]
var res = arr.findIndex(function(n){
	return n <0
})
console.log(res)//3

fill()填充

var aa = [];
var arr1 = new Array(10)
console.log(arr1.fill("111"))//111,111,111,111,111

Array.form() 可以把一个伪类数组转为真是数组

function sum (){
console.log(argumentss)
}
sum(1,2,3,4,4,5)
arguments array.prototyype.slice(ar)

数组的迭代器

var arr=[1,2,3,4,5];
for(var i= 0;i<arr.length;i++){
console.log(arr[i])
}迭代方法foreach(function(value,index,数组){}
arr.foreach(function(value,index,arr){
console.log(value+"-----下标"+index+--原数组”+arr)
})

map(function(value,index,数组))映射
arr.map(function(value,index,arr){
	consloe.log(value)
})

every(function(value,index,arr){})
var result = arr.every(function(a){
	return a % 2 ==0;
})console.log(result)
//every每一个条件都满足才返回true 只要有一个不满足就返回false
//some 只要有一个条件满足就会返回true 否则返回false

filter(过滤)//把当前符合条件的值返回 不符合的过滤
arr.filter(function(item){
return item % 2==0
})
//ES6新语法规范
function(){} == ()=>{}

reduce ((initvalue,currentvalue,index,arr)=>{

})累加
//初始值:initvalue如果设置第一个值就为初始值 如果不设置则为数组中第一个值

字符串转数组

var str = "hello word";
//split();
str.split();
console.log(str);

reverse 反转

var numm = [1,2,3,4];
var res = num.reverse();
console.log(res);

join链接 可以把数组变成字符串

var string = num+"";//原始
num.join("");默认以字符进行

var str="你好,李焕英";
var st1 = str
.split()
.reverse()
.join()

原型原型链

prototype
在javascript除外,每一个函数都有一个prototype属性,这个属性指向函数的原型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sgzNlEH6-1616837302430)(C:\Users\DUWEI\Desktop\Html\image\prototype.png)]

_ proto_
每个对象(null除外)都会有一个属性,叫_proto_,这个属性会指向对象的原型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFOPeJmx-1616837302434)(C:\Users\DUWEI\Desktop\Html\image_ proto_.png)]

constructor

每个原型都有一个constructor属性,指向与之关联的构造函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZkO1xRI-1616837302436)(C:\Users\DUWEI\Desktop\Html\image\constructor.png)]

原型链
那 Object.prototype 的原型呢?

null,我们可以打印:

console.log(Object.prototype.proto === null) // true
引用阮一峰老师的 《undefined与null的区别》 就是:

null 表示“没有对象”,即该处不应该有值。

所以 Object.prototype.proto 的值为 null 跟 Object.prototype 没有原型,其实表达了一个意思。

所以查找属性的时候查到 Object.prototype 就可以停止查找了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ORM2RCC-1616837302439)(C:\Users\DUWEI\Desktop\Html\image\原型链.png)]

全局环境 函数环境

js执行有两个阶段:创建阶段和执行阶段(生命周期)

var a 在初始化阶段只定义但是未赋值

function 在初始化阶段 声明并赋值

console.log(a);undefined

var a=10;

window.a=10;

闭包

执行上下文中 a函数中创建一个b函数 这个函数能够访问b函数中的变量 我们称这个a函数为闭包

能够读取其他函数内部变量的函数

function a(){
var name = "张三";
var age =18;
return function b(){
console.log(name,age)
}
}
var fn = a()

call apply bind改变this指针

var a =20
var obj = {
a:40
};
function fn(){
 console.log(this.a);
}
fn()//20
fn.call(obj);//40
fn.apply(obj);//40
fn.bind(obj);
bind//返回一个函数 需要在调用一下
var fn = fn.bind(obj)

手写一个new

function _new() {
	// 创建一个新对象
    let newObj = {};  
    // 获取构造函数
    let Constructor = Array.prototype.shift.call(arguments);
    // 连接新对象原型,新对象可以访问原型中的属性
    newObj.__proto__ = Constructor.prototype;
    // 执行构造函数,即绑定 this,并且为这个新对象添加属性
    Constructor.apply(newObj, arguments);
    // 返回该对象
    return newObj;
}

DOM

1、getElementById() 方法 返回带有指定 ID 的元素:
getElementById() 方法返回带有指定 ID 的元素:
	<div id="demo">节点</div>
	var demo = document.getElementById('demo');//获取父节点
2、getElementsByClassName() 方法 返回包含带有指定类名的所有元素的节点列表:

	<p class="intro">DOM 很有用。</p>

	<p class="intro">本例演示 <b>getElementsByClassName</b> 方法。</p>
	
	var x = document.getElementsByClassName("intro");
3、getElementsByTagName() 方法 通过标签名查找 HTML 元素:
	<p>DOM 很有用。</p>
	var x = document.getElementsByTagName("p");
4、querySelectorAll() 方法 通过 CSS 选择器查找 HTML 元素:
	<p class="intro">DOM 很有用。</p>
	
	<p id="intro">DOM 很有用。</p>
	
	var x = document.querySelectorAll("p.intro");
	
	var x = document.querySelectorAll("p#intro");
5、createElement() 方法 创建一个元素标签
	var h1=document.createElement("h1");
6、创建文本节点 createTextNode()
	var txt = document.createTextNode("这是一个盒子");
7、cloneNode() 方法 克隆一个节点 cloneNode(false/true)
	如果为true克隆下面的子节点,如果为false则只克隆当前的标签:
	<div id="app" data="111">
        <h1>asd</h1>
    </div>
    <button onclick="clone()">clone</button>
    <script>
     var oapp =document.querySelector("#app");
     var oh1 = document.querySelector("h1");
      function clone(){
        var newNode=oh1.cloneNode(true);
        oapp.appendChild(newNode);
    }
    </script>
8、innerHTML 属性
innerHTML 属性可用于获取或替换 HTML 元素的内容,(不替换用 "+=")

<div id="app" data="111">
        <h1>asd</h1>
</div>
<button onclick="insert()">insert</button>

<script>
var oapp =document.querySelector("#app"); 
function insert(){
        oapp.innerHTML+="<div><h1>写入文本</h1></div>";
}
</script>

鼠标事件

click mouseup mousemove mouse down mouseout

键盘事件

key keyup keydown

UI

blur focus()聚焦 blur()失焦

事件流

事件流:多个节点对象对同一事件进行响应的先后顺序

ELE.addEventListener(“mouseup”,function(){},ture)

目标阶段 冒泡阶段 捕获阶段

如果在事件监听上第三个参数设置为false是一个事件冒泡

如果是true的话是一个事件捕获

事件委托 把子事件委托给他的父级进行执行

ES6 const let var let const 区别?

共同特点都是用来声明变量的

var可以变量提升 可以重复声明

let不能重复声明 不能够变量提升 let是块级作用域

const 不能够重复性声明 值不能修改

    oapp.innerHTML+="<div><h1>写入文本</h1></div>";

}


### 鼠标事件

click mouseup mousemove mouse down mouseout


### 键盘事件

key keyup keydown


### UI

blur focus()聚焦 blur()失焦


### 事件流

事件流:多个节点对象对同一事件进行响应的先后顺序

ELE.addEventListener("mouseup",function(){},ture)

目标阶段 冒泡阶段 捕获阶段

如果在事件监听上第三个参数设置为false是一个事件冒泡

如果是true的话是一个事件捕获

事件委托 把子事件委托给他的父级进行执行

### ES6 const let var let const 区别?

共同特点都是用来声明变量的

var可以变量提升 可以重复声明 

let不能重复声明 不能够变量提升 let是块级作用域

const 不能够重复性声明 值不能修改 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值