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); //30 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?