发表于: 2020-03-27 17:39:27
0 1588
今天完成的事情:
明天计划的事情:
遇到的问题:
收获:
函数的属性和方法:
toString() #
函数的toString
方法返回一个字符串,内容是函数的源码。
length 属性
函数的length
属性返回函数预期传入的参数个数,即函数定义之中的参数个数。
name 属性
函数的name
属性返回函数的名字。
函数的变量提升
函数的作用域在其声明的位置而不是调用的位置:
函数的闭包:
原因就在于inc
始终在内存中,而inc
的存在依赖于createIncrementor
,因此也始终在内存中,不会在调用结束后,被垃圾回收机制回收。
闭包的另一个用处,是封装对象的私有属性和私有方法。
注意,外层函数每次运行,都会生成一个新的闭包,而这个闭包又会保留外层函数的内部变量,所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题。
function Person(name) {
var _age;
function setAge(n) {
_age = n;
}
function getAge() {
return _age;
}
return {
name: name,
getAge: getAge,
setAge: setAge
};
}
var p1 = Person('张三');
p1.setAge(25);
p1.getAge() // 25
eval
命令接受一个字符串作为参数,并将这个字符串当作语句执行。
如果参数字符串无法当作语句运行,那么就会报错。
放在eval
中的字符串,应该有独自存在的意义,不能用来与eval
以外的命令配合使用。举例来说,下面的代码将会报错。
如果eval
的参数不是字符串,那么会原样返回。
eval
没有自己的作用域,都在当前作用域内执行,因此可能会修改当前作用域的变量的值,造成安全问题。
数组的属性和方法以及细节:
数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。
除了在定义时赋值,数组也可以先定义后赋值。
任何类型的数据,都可以放入数组。(包括function和object以及Boolean)
如果数组的元素还是数组,就形成了多维数组。
数组的本质:
本质上,数组属于一种特殊的对象。typeof
运算符会返回数组的类型是object
。
数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...)。
所以,数组的键名其实也是字符串。之所以可以用数值读取,是因为非字符串的键名会被转为字符串。
一个值总是先转成字符串,再作为键名进行赋值。
数组的方法和属性:
数组的length
属性,返回数组的成员数量。
length
属性是可写的。如果人为设置一个小于当前成员个数的值,该数组的成员会自动减少到length
设置的值。
清空数组的一个有效方法,就是将length
属性设为0。
如果人为设置length
大于当前元素个数,则数组的成员数量会增加到这个值,新增的位置都是空位。
var a = ['a'];
a.length = 3;
a[1] // undefined
上面代码表示,当length
属性设为大于数组个数时,读取新增的位置都会返回undefined
。
如果人为设置length
为不合法的值,JavaScript 会报错。
使用delete
命令删除一个数组成员,会形成空位,并且不会影响length
属性。
对数据类型的改变:
强制转换主要指使用Number()
、String()
和Boolean()
三个函数,手动将各种类型的值,分别转换成数字、字符串或者布尔值。
对象有两种读取成员的方法:点结构(object.key
)和方括号结构(object[key]
)。但是,对于数值的键名,不能使用点结构。
in 运算符
检查某个键名是否存在的运算符in
,适用于对象,也适用于数组。
for...in 循环和数组的遍历
for...in
循环不仅可以遍历对象,也可以遍历数组,毕竟数组只是一种特殊对象。
var a = [1, 2, 3];for (var i in a) { console.log(a[i]); }
对象的基本特性和方法属性:
查看一个对象本身的所有属性,可以使用Object.keys方法。
var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);
// ['key1', 'key2']
delete命令用于删除对象的属性,删除成功后返回true。
var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
定时器的this一直指向window
评论