admin 管理员组

文章数量: 887021

js...

事件类型 = “” “这里面写的是 js代码” 事件类型 就是html标签 的 事件属性 属性值就是 js代码,里面可以写js代码,可以调用函数,可以写js代码

函数也是对象,在JS里,万物皆对象
对象分为2大类,Object 和 Function
js的对象类型有 :对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)

js的数据类型有2类

	值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。`

2.js函数

3.js的对象,只有一种类型,就是Object,而且对象是对象(是数据类型),方法是方法,方法和对象没有关系,js没有类的概念,对象就是一种数据结构,只是说创建对象,可以使用 对象的 构造方法创建
4.外部 和 内部 js 标签 可被放置在 HTML 页面的 body 和 head 部分中。

5.简单来说,js的代码 可以处理 数据,数据可以是 js的数据,可以是 dom对象(这样就可以操作 网页),然后js 的函数 是 事件交互的,是html 和 js的交互的一种方式,在html中通过事件,可以触发 js中的函数(不一定仅仅是函数,准确来说,是执行 js代码,也就是例如 onclick = 后面的其实就是 js代码),js中 可以通过 操作 dom结点数据

6.js函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

7.js事件

	HTML 事件是发生在 HTML 元素上的事情。当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。HTML 事件可以是浏览器行为,也可以是用户行为。以下是 HTML 事件的实例:HTML 页面完成加载HTML input 字段改变时HTML 按钮被点击

8.简单来说,页面被加载时,js的代码会先加载,有些代码直接可以执行,有些代码是需要 调用 或者 事件触发才能执行,例如js函数(被调用时才能执行),事件触发,执行 事件属性 = “执行这一块 js代码”

9.JavaScript 函数有 4 种调用方式。
每种方式的不同在于 this 的初始化。

js函数

1.在js中函数就是一个对象,函数在没有返回值时默认返回的一个对象,一个函数也可以作为参数传递给另外一个函数

HTML DOM (文档对象模型)

页面就是一个 dom js操作页面,就操作dom即可


1.js中的代码块(其中作用域 和 java的不同)

2.js和java的作用域的区别

3.break 和 continue用在 循环语句中,break还可以用在 switch语句中 让其不在走下面的case ,break 跳出整个循环,continue跳出当前循环

4.关于基本数据类型要注意的点:
1.NaN,即非数值(Not a Number)是一个特殊的数值,JS中
当对数值进行计算时没有结果返回,则返回NaN。
2.Undefined 类型只有一个值,即特殊的 undefined 。
需要注意的是typeof对没有初始化和没有声明的变量都会返回
undefined。

3.Null 类型是第二个只有一个值的数据类型,这个特殊的值是null 。
从语义上看null表示的是一个空的对象。所以使用typeof检查null会返回一个Object。
undefined值实际上是由null值衍生出来的,所以如果比较
undefined和null是否相等,会返回true;

5.代码块,js的代码块和java的代码块 在作用域上是不同的

6.变量作为if的直接判断条件
当一个变量的值是“”,‘’,0,undefined,null,false,或者是NaN时,作为if的判断条件时均作为false对待,其他为true,尤其当变量作为对象的时候只要这个对象变量的值不为null,那么就是true。

7.除了基本数据类型外,其他都是对象,数组,函数都是对象

8.js的 类和对象,也是抽象与实例的关系,但是js可以 直接 定义对象并使用,java中不行,java只能定义类,然后创建对象

9.java和js 类的对象的 区别(重点)
1.js是晚绑定的
2.js中的对象,除了 函数,是有方法的,其他的都只有属性
3.js中的对象 也是 用类来 实例化的

10.in 运算符
可以检查 一个对象中是否 含有 指定属性
“属性名” in 对象 true or false

11.js中任何对象,都可以 使用 构造函数 创建,但是有些对象有独特的 声明方法,Object声明对象,以及函数声明对象

12.函数声明对象:

第一种:
function fun1(){
}对象的名字就是 fun1
具有对象的特点
fun1.name =  对象定义属性
fun1() 函数调用第二种:函数表达式 来创建一个函数
var fun = function(){}

13.函数的参数
1.在调用函数时,解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,如果有可能需要对参数进行类型检查

function fun(a,b){
console.log(a+b)}
fun(1,"s");
这时候,a+b 可能就会出现异常了

2.调用函数时,解析器也不会检查实参的数量
多余的参数不会被赋值
如果实参的数量少于形参的数量,对应形参的值 就是 undefined

function fun(a,b){
console.log(a+b)}
fun(1,"s");  "1s"
fun(1); undefined
fun(1,2,3,4) 3

14.函数的返回值
如果 return语句后不跟任何值,等于返回一个 undefined
如果函数种不写return 则也会返回 undefined

15.undefined与null之间的区别
1.null和undefined的类型不同

console.log(typeof(undefined)); //undefined
console.log(typeof(null));    //object

null是一个具有有效不存在值的对象,并且它是不可变的,而undefined的对象类型是本身未定义的
此外任何具有null值的算术运算都将产生整数值,而任何带有undefined的算术运算都会导致变量值变为NaN

2.转换为原始类型的方式不同
null和undefined之间的主要区别在于它们被转换为原始类型的方式。在null上执行算术转换时,确定的值为0可以使用以下代码片段验证此转换。

var v1= 5+ null;
console.log(v1) 5

但是undefined不执行任何此类转换,如果将undefined添加到数字中得出的结果将为NaN

var v2= 5+ undefined;
console.log(v2) undefined

16.立即执行函数:就是 匿名函数,在定义的时候,直接调用,后面在想调用,无法调用了(意义不大,完全可以直接定义一个函数,然后执行一次即可)

(function(){})() ;
(function(a,b))(1.2);

17.对象调属性值的两种方式
1.对象.属性名
2.对象[属性名] 注意用这个的时候,属性名一定是变量

var a{"a":1
}
console.log(a.a) 1
console.log(a[a]) undefined
var b = "a"
console.log(a[b]) 1

18.方法:方法就是函数,只是 对象的属性 是 一个函数时,就说这个 对象的方法,其实就是一个叫法的不同

19.for in 的使用
就是用来 枚举对象中的属性

语法:
for(var 变量 in 对象){}
for...in语句 对象中有几个属性,循环体就会执行几次
每次执行时,会将对象中的一个属性的名字 赋值给变量
但是由于 时变量,所以想调用 必须用 对象[变量] 去调用例子
var obj = {a:1,b:2
}
for(var n in obj){console.log(obj[n]);
}
结果:
1
2

20.js == === (包含,!== !=== …)区别
简单来说,===才是 和 java == 相同的概念,严格等于,比较值
js中的 == 如果值不同,会先类型转换,然后再次比较的(至于具体细节,还是比较复杂的,有多种情况)
用的时候 用 === 是最严格的

21.js 就两点 数据类型的操作(js的基本语法),数据类型就包含 2个特别的,dom 和bom dom就是html 结点,html结点 就包括了标签,标签内容,以及标签属性,标签属性里面的 style属性就是控制 样式的,所以说 js也可以控制样式的,js可以控制 html(dom = 标签,属性,和内容) 和 浏览器(bom)
还有一点就是 事件

22.HTML CSS JS ,HTML就是 页面,所有有关页面的 都是 HTML的内容,CSS是一个单独的语法,其实也是 HTML的内容,HTML的 三大特点 标签,属性,内容,属性中的 style属性 就是 控制样式的,而css作为一个 单独的 语法,就是来 隔离出style属性出来,用css来统一写而已,反而JS和 HTML没有任何关系,JS的动态语言

23.html的语法是死的,也就是说例如下拉框,表格等都是 死的,但是 css可以让这些 死的,有各种各样的表现形式,而 js 可以动态的 控制 html(css),而 ui框架,js框架,就是 各种各样的 js代码,css库,那么 简单的说,ui框架,可以控制各种各样的 html,css,js代码…

24.作用域

- 作用域简单来说就是一个变量的作用范围。
- 在JS中作用域分成两种:
- 1.全局作用域- 直接在script标签中编写的代码都运行在全局作用域中- 全局作用域在打开页面时创建,在页面关闭时销毁。- 全局作用域中有一个全局对象window,window对象由浏览器提供,可以在页面中直接使用,它代表的是整个的浏览器的窗口。- 在全局作用域中创建的变量都会作为window对象的属性保存在全局作用域中创建的函数都会作为window对象的方法保存- 在全局作用域中创建的变量和函数可以在页面的任意位置访问。在函数作用域中也可以访问到全局作用域的变量。- 尽量不要在全局中创建变量	2.函数作用域- 函数作用域是函数执行时创建的作用域,每次调用函数都会创建一个新的函数作用域。- 函数作用域在函数执行时创建,在函数执行结束时销毁。- 在函数作用域中创建的变量,不能在全局中访问。- 当在函数作用域中使用(注意是使用时,而不是创建时)一个变量时,它会先在自身作用域中寻找,如果找到了则直接使用,如果没有找到则到上一级作用域中寻找,如果找到了则使用,找不到则继续向上找,一直会- 变量的声明提前- 在全局作用域中,使用var关键字声明的变量会在所有的代码执行之前被声明,但是不会赋值。所以我们可以在变量声明前使用变量。但是不使用var关键字声明的变量不会被声明提前。- 在函数作用域中,也具有该特性,使用var关键字声明的变量会在函数所有的代码执行前被声明,如果没有使用var关键字声明变量,则变量会变成全局变量- 函数的声明提前- 在全局作用域中,使用函数声明创建的函数(function fun(){}),会在所有的代码执行之前被创建,也就是我们可以在函数声明前去调用函数,但是使用函数表达式(var fun = function(){})创建的函数没有该特性- 在函数作用域中,使用函数声明创建的函数,会在所有的函数中的代码执行之前就被创建好了。

25
this(上下文对象)
- 我们每次调用函数时(而不是创建),解析器都会将一个上下文对象作为隐含的参数传递进函数(函数内部 有这个对象,可以在函数内部使用)。
简单来说 this 是函数对象 内部 独有的
使用this来引用上下文对象,根据函数的调用形式不同,this的值也不同。
- this的不同的情况:
1.以函数的形式调用时,this是window
2.以方法的形式调用时,this就是调用方法的对象(方法的对象就和 java的对象一样)
3.以构造函数的形式调用时,this就是新创建的对象

26.创建一个的对象的方式
1.直接创建对象
对于对象
var a = {}
对于函数
function fun()
或者 var fun = function()
这两种 都是会 提前声明的 和普通对象 var a = 没区别(function fun() 还会提示赋值),和 a = 这种的 没有任何关系

上面都是 直接创建对象的方式

2.通过构造方法(也就是 new 类名)的方式
1.普通对象 new Object()
2.函数对象 首先 function Fun(){} 创建一个函数对象
然后 new Fun(); 这样就是 用 构造函数 创建对象

注意在 函数 中的属性的定义方式有多种
1.变量.的方式
2.如果我们用 构造函数创建对象,那么 在函数内部 就可以写 this.变量名 = xxx
这时候 变量名 就是这个 函数对象的属性,你在函数内部定义的 var 变量名 =xx
这根本不是对象的属性,而是临时变量

27.到这步,难点就是
1.类和对象:js中的类,就是 只有 function Fun(),这里首先时创建一个函数对象,其次时 定义了一个 Fun()类,可以通过 new Fun() 去再次创建对象

2.this代表的含义和什么时候用
1.如果通过构造函数创建对象,那么 在函数对象内部 创建属性是最合适的,因为此时的 this就代表的 这个 函数对象
2.如果不是构造函数创建对象,那么就用普通的 对象.xxx 的方式 来给对象 赋值属性值

3.作用域
1.创建(是不是提前声明,有没有提前声明并赋值)
2.使用时,要考虑 var a = xxx ,这个xxx 是全局的 还是 就近的

4.对象的属性,和函数对象里面的 临时变量是不一样的

28.js就是面向对象的语言,有类的概念,有对象的概念,也可以用class创建类的 后面再说,Object是 最高的父类,一切类都是 来自于它
再来说,不用class现阶段 怎么创建对象,那就是 function Fun() ,这即代表了,创建了一个函数对象,也代表了创建了一个 类Fun(),可以用 new Fun() 在创建一个对象,说是function 其实就是 class ,只是 function 里面有方法,叫函数对象,

29,尽量不要在 全局域中,创建变量对象,虽然 全局域是 共享域,可以定义共享资源,但是 js 不同于 java的是,js 运行 同名对象变量的存在,下一个会覆盖掉上一个,所以 为了 不被覆盖,我们尽量 不要在 全局域中定义 共享对象

本文标签: JS