JS中对象的特点

JS中有6种数据类型

  1. Int
  2. String
  3. Boolean
  4. Null
  5. Undefined
  6. Object

值类型与引用类型两大类

值类型(不是对象)

  1. Int
  2. String
  3. Boolean
  4. Undefined

引用类型

  1. Null
  2. Object

据我所知,共有五种属性可以判断数据的类型

  1. typeof 会返回一个字符串,适合函数判断和基本类型的判断(特殊null返回的数据类型是“object”)
  2. instanceof判断对象类型,但是不同的Window和iframe对象类型检测不能用(原型链中)
  3. Object.prototype.toString.apply([]) === "[object.Array]"//在IE6,7,8下,对null和undefined检测失效
  4. constructor
  5. duck type

一般来说, 常用的就两种, typeofinstanceof

typeof主要判断普通的值类型,如string,int,boolean,undefined

instanceof主要判断一些函数,数组,对象,null…引用类型

例如:

var fn = function () { };
console.log(fn instanceof Object); // true

js的对象与java,c#不一样, js的对象没有方法, 只有属性, 那些方法也都是属性,都表示为键值对的形式.并且js中对象属性是动态的, 可以添加, 删除.等等…

自定义对象属性里面可以添加函数,甚至一个对象

例如:

添加

var isObj = { 
name:'GanPing',
age:18,
eat:function(){}, //一个函数
Obj={name:'对象',age:20} //一个对象
};

删除

delete isObj.name;
console.log(isObj.name); // undefined

那么,函数呢,数组呢, 它们也可以和自定义对象一样,添加属性与方法吗?

答:当然可以,只不过与自定义对象的方式不同

例如:

var fn = function () {
alert(100);
};
fn.a = 10;
fn.b = function () {
alert(123);
};
fn.c = {
name: "PRAY",
year: 1988
};

总之,只要是对象,它就是属性的集合
再比如

console.log($ instanceof Object ); //true
console.log(typeof ($.trim('GanPing'))); // 返回为一个string 类型

所以, 在JavaScript中, 一切(引用类型)都是对象,对象也就是属性的集合罢了
(完)

分享到