--变量声明提前
使用var 声明的变量,会在所有的代码执行前被声明(但是不会赋值)。
使用in 检查对象中是否含有某个属性时,如果对象中没有但是原型中有,也会返回true
可以使用对象的方法 hasOwnProperty(),来判断对象有没有某个属性。
原型对象也是对象,它也有原型
当我们使用一个对象的属性或方法时,会首先在自身中寻找,
自身中如果有,则直接使用
如果没有则去原型对象中寻找,如果原型中存在则使用,
如果没有则到原型的原型中寻找,直到找到Object对象的原型。
Object对象的原型没有原型了,如果在Object中没有找到,在返回undefined。
3 当我们直接在页面中打印一个对象时,实际上是输出的是对象的toString()方法的返回值。如果我们在输出对象时不输出【Object。Object】则可以给对象添加一个toString()方法。
4 垃圾回收
程序运行过程中产生的垃圾,垃圾积攒过多,程序运行速度过慢,所以需要处理这些产生的垃圾,
垃圾的产生: 当一个对象没有任何变量或属性对它进行引用,,此时我们将永远无法操作该对象,此时对象就是一个垃圾,
这种对象过多会占用大量的内存空间,导致程序运行变慢,所以这种垃圾必须定期的清理,
在js中拥有自动的垃圾回收机制,会自动的将这些垃圾对象从内存中销毁,我们不需要做也不能进行垃圾回收的操作。
---我们需要做的就是将不再使用的对象设置为null 即可。
5 js 中的数组
数组也是对象,和普通的对象功能类似,也是用来存储数据的,不同的是普通对象使用字符串作为属性名称的,
数组时通过下标来记录数值的,(索引)
索引:从0开始的整数,
数组的存储性能比普通对象好,在开发中经常使用数组来存储数据,
// 创建数组对象
var arr = new Array(); 使用 typeof 检查数组时会返回 object
向数组中添加元素
arr[0] = 10;
arr[1] = 20;
console.log(arr) // 输出 10,20
如果读取不存在的索引, 返回 undefined
数组的方法有哪些?
length // 获取数组的长度。尽量不要创建非连续的数组。
使用字面量创建数组 可以在创建时就指定数组的元素。
var arr = [];
创建一个数组数组中只有一个元素10
arr = [10];
//创建一个长度为10的数组
arr2 = new Array[10];.
数组中可以放置任意数据,也可以是对象。也可以是函数,数组中也可以放数组,称为二维数组。
方法
push();//向数组中添加数据,加在最后,并且返回新的长度
pop()//,删除最后一个并返回删除元素
unshift();//
shift();//
数组的遍历使用。for 循环。也可以使用 foreach(); 这个方法只支持IE8 以上的浏览器,
方法 slice()
-可以用来从数组提取指定元素
- 该方法不会改变元素数组,而是将截取到的数组封装到一个新的数组中去。
- 参数
1, 截取开始的位置的索引,包括开始索引,
2。 截取结束的位置的索引,不包含结束索引,第二个参数可以省略不写,此时会截取开始到末尾的数组。
索引也可以是一个负值,如果传递一个负数,则从后往前截取。
去除数组中的重复数据
var arr = [1,2,3,4,5,6,7,4,3,2,4,5]; for(int i = 0;i<arr.length;i++){ for(int j = i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ arr.splece(j); j-- } } }
方法
concat() 可以连接两个或多个数组,并将新的数组返回。该方法不会对原数组产生影响。(也可以直接传元素)
join() 该方法可以将数组转化成字符串,不会对原数组产生影响。在join可以指定一个字符串作为参数,成为连接符号来使用。不指定默认使用“,”。
reverse()反转元素
sort();,对数组进行排序。默认按照Unicode排序,数字也一样;我们可以指定排序规则。
添加回调函数,