JS零碎知识点总结(1)

1、传递参数

function setName(obj){
    obj.name = "good";
    obj = new Object();
    obj.name = "ok";
}

var person = new Object();
setName(person);
console.log(person.name); // good

当在函数内部重写obj时,这个变量引用的就是一个局部对象了,而这个局部对象会再函数执行完成后立即被销毁。

2、检测类型

a、typeof

var a = "good";
var b = true;
var c = 22;
var d;
var e = null;
var h = new Object;

console.log(a);    //string
console.log(b);   //boolean
console.log(c);   //number
console.log(d);   //undefined
console.log(e);   //object
console.log(h);   //object

1、typeof是检测变量是什么基本类型的;
2、例如上例中的e、h,如果一个变量的值是null或者是一个对象,则typeof都会返回object。

b、instanceof

//语法
result = variable instanceof constructor
//例子
console.log(person instanceof Object); // person 是不是 object类型
console.log(colors instanceof Array); // person 是不是 object类型

1、instanceof是检测这个变量是对象后,具体的是什么类型的对象;
2、使用instanceof 检测基本类型值的结果始终是false,因为基本类型不是对象。

3、延长作用域链

当函数执行到下列函数时,作用域链会延长

a、try-catch语句的catch块;

b、with语句。

function  setUrl () {
    var qs = "?id=ding";
    with (location) {
        var url = href + qs;
    }
    return url;
}

4、垃圾收集

定义:找出那些不再继续使用的变量,然后释放其占用的内存。
方法:

a、标记清除法

会为每一个存储在内存中的变量都加上标记,会去掉被使用的变量以及被别的变量引用的变量的标记,如果一个变量再次被加上标记,则被视为准备删除的变量,因为这个变量已经不被使用了,之后就会进行清除了。

b、引用计数法

有很多的弊端与bug,已经被废除,停止使用。

5、Object类型

创建Object实例有两种方式。

a、使用new操作符后跟Object构造函数

var person  = new Object();
person.name = "ding";
person.age = 20;

b、使用对象字面量

var person = {
    name = "ding",
    age = 20
}
// 最后一个属性后面不要加逗号(,),IE7以下会报错。  

获取对象里的属性方式:a、点(.)符号,b、中括号([])
区别:1、方括号可以通过变量来访问属性

var pName = "name";
alert(person[pName ]); // ding

通常,除非必须使用变量访问属性,其他都是使用点(.)。

6、Array类型

数组最多可以创建4 294 967 295项。

基本操作

a、创建、获取、新增、修改

var number = [one,two,three,four];//创建
alert(number[0]); // one,获取
number[2] = "c"; //修改第三项
number[4] = "five"; // 新增第5项
number[length] = "six"; //总是尾部新增
number[length] = "seven"; // 总是尾部新增
numner =  [one,two,c,four,five,six,seven];

b、创建

var array = [1,2,];
// IE8会创建3个值:1,2,undefined;
// 其他浏览器创建2个值:1,2;

函数操作

7、Date类型

8、RegExp类型

推荐阅读更多精彩内容