对象篇
Object简介
Object本身就是一个函数,可用于工具函数,也可以是用于构造对象的函数;其次Object可以添加属性和方法;方法又可以分为静态方法(定义在自身上的)和实例方法(定义在Object原型上的)
工具函数
- 作为工具函数:参数可以是任意数据类型,将其转为对象;如果参数是空,null,undefined,则将其转换为空对象;如果参数是原始值,则返回包装类对象;如果参数是对象则返回原对象;
利用这一特点可以构建一个判断参数是否为对象的函数
function isObject(target) {
return target === Object(target);
}
作为构造函数
- 作为构造函数:生成一个对象,在下篇中着重介绍
var obj = new Object(); //{}
部分静态方法
- Object的静态方法:
-
keys()与hasOwnPropertyNames(),其都是将对象的自身属性(不包含继承部分)以数组形式返回;其唯一的区别是:对于不可枚举的属性,keys不会输出,而hasOwnPropertyNames则会输出,例如数组又一个不可枚举的length属性
var arr = [1, 2, 3]; //var arr = new Object('123'); 输出也是一样的 Object.keys(arr); //['1', '2', '3'] Object.getOwnPropertyNames(arr); //['1', '2', '3', 'length']
- 借keys方法可以输出对象属性的个数,Object.keys(obj).length
- 剩余方法中篇记录
部分实例方法
-
Object的实例方法:
-
Object.prototype.valueOf()
valueOf()返回对象的值,默认返回对象本身var obj = {a : 1}; obj.valueOf() === obj; //true
-
Object.prototype().toString()
toString()返回类型字符串,默认值为[object Object],第一个object为类型,第二个是构造函数Object,我们可以利用第二个构造函数来判断数据的类型Object.prototype.toString.call([]); //[object Array] Object.prototype.toString.call({}); //[object Object] Object.prototype.toString.call(123); //[object Number]
改进成函数:
var type = function (target) { var str = Object.prototype.toString.call(target); return str.slice(8, -1); }; ['Null', 'String', 'Boolean', 'Number', 'Undefined', 'Object', 'Function', 'Array', 'Window' , 'RegExp', 'Date'].forEach(function (elem) { type['is' + elem] = function (target) { return type(target) == elem; } }); type.isNumber(123); //true type.isObject({}); //true
- Object.prototype.toLocaleString()与toString()结果一样,不同的是对于数组,日期,数字类型的的包装对象,返回地方化的字符串输出格式
-
Object.prototype.hasOwnProperty(),用于判断参数是否为对象的属性,返回一个布尔值
var obj = {a : 1}; obj.hasOwnProperty("a"); //true
-
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。