1 引用类型和基本类型
1.1 原始对象
var a = 1;
a.a = 2;
console.log(a.a); //undefined
1.2 引用类型
var a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a.x);//undefined
console.log(b.x);//[object object]
2 类型转换
运算过程的转换原则:
- string与number相加,变成 string
- string与number相减,变成number
function foo1(a) {
return a + '01';
}
function foo2(a) {
return '010' - 010;
}
foo1(01);// '101'
foo2(010);// 0开头代表八进制,010表示8, 输出2
3 写一个function,清楚字符串前后的空格
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+/, "").replace(/\s+$/, "");
}
}
//test the function
var str = " test string ".trim();
console.log(str === "test string");//true
4 写一个function,实现深拷贝
function deepCopy(obj) {
var ret, k, b;
ret = (obj instanceof Array) ? [] : {};
for (k in obj) {
if (obj[k] instanceof Array || obj[k] instanceof Object) {
//利用递归逐个复制obj中的属性
ret[k] = deepCopy(obj[k]);
} else {
ret[k] = obj[k];
}
}
return ret;
}
5 数组操作
5.1 消除数组里面重复的元素
var myArray = [11,2,3,4,5,11,4,7,9];
var arr = myArray.filter(function (elem, pos, self) {
//elem表示数组中的某一个元素,pos表示这个元素在数组中的位置,self表示这个数组
//indexOf会取得最先匹配的一个元素的位置,比如elem为11是,self.indexOf(elem) = 0
return self.indexOf(elem) == pos;
})
console.log(arr);//[11,2,3,4,5,7,9];
5.2 给数组进行排序
var arr = [11, 2, 28, 5, 8, 4, 3]
arr.sort(function (after, before) {
/*after表示靠后的元素,before是考前的元素,如果返回时true,才执行排序,最后是从小到大*/
return after - before;
})