1,js中的 基本类型 引用类型
javascript中有两种变量类型:基本类型和引用类型,基本类型包括:Number、String、Undefined、Null、Boolean这五种,而引用类型就是Object
1.引用类型相对基本类型可以为其添加属性方法
var person = new Object();
person.name = “Nicholas”;
alert(person.name); //”Nicholas” var name = “Nicholas”;
name.age = 27;
alert(name.age); //undefined
2.基本类型被复制于另一个变量时,会在该变量对象创建一个新值,然后把值复制到为新变量分配的位置上,而引用类型引用的都是同一个对象。
var num1 = 5;
var num2 = num1;
var obj1 = new Object();
var obj2 = obj1;
obj1.name = “Nicholas”;
alert(obj2.name); //”Nicholas”
3.函数的参数都是按值传递,传参为基本类型时,参数传进后,即被创建为新的,与函数外之前定义的毫不相干。而如果传的参数为引用类型,即是一个新创建的对象,则于之前传入的值引用的是同一(对象)地址,函数内如果对其发生改变,会影响函数外的那个值,但如果再此基础上函数内再创建一个新的对象,不会再改变函数外的那个值,因为此时创建的对象,就是引用的一个局部变量了,在函数执行完过后就会被销毁!~
function addTen(num) {
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20 - no change
alert(result); // function setName(obj) {
obj.name = “Nicholas”;
}
var person = new Object();
setName(person);
alert(person.name); //”Nicholas”
4.检查基本类型用typeof 检查引用类型,同时为什么类型的对象,alert(a instanceof Object/Array/RegExp)结果true或者flase;
var s = “Nicholas”;
var b = true;
var i = 22;
var u;
var n = null;
var o = new Object(); alert(typeof s); //string
alert(typeof i); //number
alert(typeof b); //boolean
alert(typeof u); //undefined
alert(typeof n); //object 注意null 返回的也是object
alert(typeof o); //object
关于object,我们可能需要关心的是Object的种类,所以这里就使用instanceof。
alert(person instanceof Object); //is the variable person an Object?
alert(colors instanceof Array); //is the variable colors an Array?
alert(pattern instanceof RegExp); //is the variable pattern a RegExp?