2021-02-21

对于js的一些总结

一、通常,通过 JavaScript,您需要操作 HTML 元素。

1、通过 id 找到 HTML 元素

2、通过标签名找到 HTML 元素

3、通过类名找到 HTML 元素

①、改变 HTML 元素的内容 (innerHTML)
②、改变 HTML 属性
③、改变 HTML 样式
④、添加或删除 HTML 元素
二、DOM事件
unload:事件在用户退出页面时发生

window.onload = function(){
      return “页面关闭!”;

};

onblur:失去焦点发生变化

window.onblur = function(){
      inp.value = inp.value.toUppercase();

};

onfocus:点击文本框会获得焦点发生

inp.focus = function(){
      alert(‘弹出的内容’);

};

onselect:要选中文本框中的内容会执行的事件

inp.onselect = function(){
      alert(‘要执行的内容’);

};

onchange:事件会在域的内容发生改变时发生

inp.onchange = function(){
      alert(‘要执行的内容’);

};

onreset:当点击重置的时候才会发生

form.onreset = function(){
      //点击重置,是form;

};

onsumbit:点击提交

form.onsumbit = function(){
      alert(‘要执行的内容’);

};

onresize:当窗口发生大小变换的时候就会执行

window.onresize = function(){
      alert(‘要执行的内容’);

};

scrollBy、scrollTo:相对于自己之前的位置发生偏移,一个x一个y轴为参数

function scroll(){
      window.scrollBy(100,100);

window.scrollTo(100,100);//绝对,固定

};

ondbclick:双击发生变化

inp.ondbclick = function(){
      inp.value = “我双击了”;

};

onclick:点击发生变化

inp.onclick = function(){
      inp.value = “我点击了”;

};

onmouseover:鼠标经过会发生变化,类似hover效果

inp.onmouseover = function(){
      inp.value = “我鼠标滑过了”;

};

onmouseout:鼠标移除会发生变化

inp.onmouseout = function(){
      inp.value = “我鼠标移除来了了”;

};

onmousedown:鼠标按键按下去会发生变化

inp.onmousedown = function(){
      inp.value = “我鼠标按下来了”;

};

onmouseup:按键按下去并释放松开会发生变化

inp.onmouseup = function(){
      inp.value = “我鼠标按下并释放了”;

};

onkeydown:按下键盘去会发生变化

inp.onkeydown = function(){
      inp.value = “我按下键盘了”;

};

onkeyup:按下键盘去会发生变化

inp.onkeyup = function(){
      inp.value = “我松开键盘了”;

};

三、Js 作用域链(是指AO链)

1:参数

2:局部变量声明

3:函数声明

  • 函数声明与函数表达式的区别

表达式必有返回值,把返回值(即匿名函数)赋给了一个变量.

此时 就是普通的赋值过程.

①、js并不是一句一句顺序执行的,先进行词法分析

This, 与 arguments

当一个函数运行的时候,函数内部能引用的变量有这么几种

AO、arguments、this

对于 arguments和this, 每个函数都有自己独有的arguments和this, 且不进行链式查找

arguments是什么?

答:1:arguments是收到的实参副本

2:收到实参收集起来,放到一个arguments对象里

在词法分析中, 首先按形参形成AO的属性,值为undefined

当实参传来时, 再修改AO的相应属性.

t(a,b,c){},

调用时: t(1,2,3,4,5) 个参数

此时 , AO属性只有a,bc,3个属性, arguments里有1,3,3,4,5, 所有的值

对于超出形参个数之外的实参, 可以通过arguments来获得

3:arguments 的索引 从 0, 1,2,…递增,与实参逐个对应

4:arguments.length 属性代表实参的个数

5:Arguments一定不是数组, 是长的比较像数组的一个对象,虽然也有length属性

6:Arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,

无法引用到外层的arguments

This是谁

This是指调用上下文

针对函数的应用场景来讨论

函数的4种调用方式

1:函数方式

直接调用函数名,或函数表达式的返回值,

This指代全局对象,window

2:属性方式(对象方法方式)

This指代该对象(方法的属主)

3:构造器方式

通过 new 函数 名() , 来创建对象

在js里, 构造函数与对象的关系比较松散,

对象就是"属性->值"的集合

构造器的作用,是制造一个对象,把this指向该对象,

4:call,apply方式

函数本身即是对象,对象就有方法

函数名.call(对象,参数1,参数2,参数3);

以fn.call(obj,‘a’,‘b’);

实际效果相当于

1:fn内部的this指向了obj

2:fn(‘a’,‘b’);

Apply的效果与call一样, 只不过传参时,把所有参数包装在数组里,传过去.

例 fn.call(obj,‘a’,’ b’) ===> fn.apply(obj,[‘a’,‘b’]);

还有一种改变this的方法

With 语句

With(对象) {
语句1

语句2

}

在with内部的语句,就把参数中的对象当成的上下文环境.

四、词法分析

js执行顺序

1:词法分析阶段

先把接收到的参数放到激活对象上

再对函数体中代码作分析

a: var xx = yy;

做法:声明一个xx属性在激活对象上,

但不赋值,如果已经有xx,则不无动作.

b:function ttt() {
}

做法:直接声明ttt属性,

且内容是函数体

2:执行语句阶段

五、Js面向对象

属性,方法–>对象

"类"能做到封装,继承,多态,

"类"的静态方法

1: js中的对象是什么?

答:js的对象就是键值对的无序集合

2:种创建对象的方法

①、通过字面量来创建对象

例:{age:22,hei:180}

{}->空对象,没有属性

②、通过 new Object([value]);

通过构造函数来创建对象(和第2种没区别,因为Object就是系统内建的构造函数)

六、js封装
1、js的全局代码区只有一个,这样就会造成同名变量的值会被覆盖。
2、使用对象封装,将代码封装到对象中.但是对象如果被覆盖,则全部失效,风险极高。
3、使用工厂模式,将代码进行封装,但是并没有解决问题。
4、将封装的函数名字去除,避免覆盖。但是函数没有办法调用了。
5、匿名自调用,可以在页面加载的时候调用一次。但是不能重复调用,并且数据没有办法获取。
6、使用闭包,将数据一次性挂载到window对象下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值