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;
网友评论