JavaScript
加油
20200604
function name(argument){code;return retval};
- 函数是全局的,在定义前即可调用;
- 没有return,默认返回undefined;
- 函数名重复会产生覆盖;
- 函数读到第一个return后即返回,之后的语句会被完全无视;
调用函数:
- 通过名称调用;
- 通过全局对象window调用;
参数:
- 多余参数会被无视
- 实现默认参数的方式:
1
2
3arg=arg||default val;
if(arg===undefined)arg=default val;
arg=arg===undefined?0:y; - 函数的所有参数构成arguments[]对象
一些全局函数:
parseInt(string,radix):返回字符串转换成radix进制的整数
parseFloat(string,):返回字符串转换成的浮点数
isFinite(var):若是无限大或NaN则返回False
isNaN(var):若是NaN则返回真
encodeURI(string):返回URI编码后的地址
- 若要对所有ASCII码标点符号都进行编码,适宜使用encodeURIComponent()
decodeURI(string):返回URI解码后的地址
- 同上;
escape(string):返回全平台适用的URI编码一般适用的字符串
unescape(string):返回解码的字符串
Number(object):将对象转换为数值?
- 如果是Date对象,会返回1970年1月1日到当前时间的毫秒数
特殊形式的函数
- JavaScript中函数也是一种数据类型,它有两个特性
- 匿名函数,不命名的函数:
- 将函数表达式存储在变量中,变量也可以作为一个函数使用
- 可以将匿名函数作为参数传递给其他函数(像函数指针一样
- 通过匿名函数完成一些一次性任务
20200605
自定义对象
对象字面量法
1
2
3
4
5var obj={
key:value(string),
key1:value1
//建议将key都用" "括起来
}通过new Object()创建对象
1
2
3
4
5
6
7
8
9
10
11var obj= new Object();//创建空对象
var arr=new Array();//创建新数组对象
var date=new Date();//创建Date对象
var reg=new RegExp();//创建正则表达式
var obj=new Create(arguments);//通过自定义构造函数创建对象
```
3. 通过Object.create(key:value)创建对象
#### 对象的属性与方法
1. 通过小数点或者方括号调用对象属性值
2. 动态读取var x=key
console.log(obj.x);//undefined
console.log(obj[x]);//success
console.log(obj[‘x’]);//undefined1
2
3
43. 添加/修改属性:作为等式左值进行赋值即可实现
4. delete实现删除属性
+ 只会断开连接,若属性是对象,delete后仍可直接访问
5. for/in遍历for(var p in obj){
console.log(p);//取出的是值
}
1
6.对象中的方法
var obj={
name:function(){}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59### 20200607
#### 对象的结构
+ 属性特性
1. writable
2. enumerable
3. configurabel
4. getter
5. setter
+ 对象特性
1. prototype
2. class
3. extensiblity
+ 原型链:obj->obj.prototype->object.prototype->null。所有对象都继承于Object父对象
1. 通过(bool)'key' in obj 检测是否有某个属性或方法,会向上到原型中去查找;
2. 通过obj.hasOwnProperty('key') 方法查找对象本身是否拥有该属性
3. 通过Object.create({key:value})创建的对象,实质是创建了一个对象的原型,即对上述对象 obj.hasOwnProperty('key')==false
#### 属性的特性
+ 简介
1. writable:属性的值能否再修改,默认为true
2. enumerable:能否通过for/in访问到该属性,直接在对象上定义的属性默认为true
3. configurable:能否通过delete删除并重新定义属性,能否修改这些特性
+ 可枚举的:
1. 通过obj.propertyIsEnumerable('key')来判断是否为可枚举的自有属性
2. 通过Object.getOwnPropertyNames(obj)获取所有**自有**属性的名称
### 20200609
#### 属性特性描述
+ 通过Object.defineProperty(obj,prop,descriptor)来精确添加或修改对象的属性,通过该方法创建属性的默认配置均为false
+ 通过Object.defineProperties(obj,{
'key':{
value:''
writable:
emnumerable:
configurable:
}
})
#### 属性的特性
+ "__proto__"属性指向了对象的父对象,将之赋值为null来使对象没有继承的属性
+ configurable主要限定的是Object.defineProperty()函数能否再修改属性的特性,其中也包括value,即属性的值;特别的,configurable:false的属性的writable特性可以从true被修改为false
+ 通过Object.getOwnPropertyDescriptor(obj,'key')来得到属性的特性状态
### 20200613
#### 对象的特性
+ 三个对象的特性:
1. prototype:指向一个**对象**
2. class:一个标示对象**类**的字符串
3. extensible flag:标明是否为可扩展
+ 通过obj.isPrototypeOf(obj)来检测对象是否是参数对象的原型(或处于参数对象的原型链中)
### 20200626
#### 事件!!
+ 定义:发生在文档或浏览器窗口内的交互
+ 事件的属性:
1. 事件类型
2. 事件目标
3. 事件处理/监听程序
4. 事件对象
5. 事件传播
+ 脚本模型<input …… id=’btn’/>
1
+ DOM2模型:实时添加事件和删除事件
```