Object类型是JavaScript中最常用的类型,它的实例并不具备多少功能,但对于在应用程序中存储和传输数据而言,确实是非常理想的。JS中所有对象都继承自Object对象,在ECMAScript中Object是所有对象的基础,相当于C#中所有类的基类。
1 创建Object实例的方式有两种。
第一种是构造函数法,使用 new 操作符后跟Object构造函数,如下所示:
var person = new Object();//创建了Object引用类型的一个新实例,然后把该实例保存在了变量person中
person.name = "linxiaomei";
person.age = 18;
第二种是对象字面量的方式,它是对象定义的一种简写方式,目的在于简化创建对象的过程。如下所示:
var person = {
name: "linxiaomei",
age: 18
};
2 Object的每个实例都具有如下属性和方法,因为这些属性都存在与Object的原型中。如图
- constructor:保存着用于创建当前对象的函数。
person.constructor == Object // true
console.log(person.constructor.name);// Object
- hasOwnProperty( propertyName ) : 用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。如:
person.hasOwnProperty("name"); // true
- isPrototypeOf( object ) : 用于检查传入的对象是否是当前对象的原型
Object.prototype.isPrototypeOf( person );//true
//Object.prototype 是person对象的原型
- propertyIsEnumerable( propertyName ) : 它是hasOwnProperty()的加强版,检测该属性为对象实例的属性且该属性可枚举才会返回true,否则返回false。
var person = {};
Object.defineProperty(person, "name", {
enumerable: false,
value: "linxiaomei"
});
console.log(person.hasOwnProperty("name"));//true
console.log(person.propertyIsEnumerable("name"));//false
- toLocaleString():返回对象的字符串表示,该字符与执行环境的地区相对应。
- toString(): 返回对象的字符串表示。
//数字转换成字符串
var num = 123;
var numD = 1234567;
console.log(num.toLocaleString());//123
console.log(num.toString());//123
console.log(numD.toLocaleString());//1,234,567
console.log(numD.toString());//1234567
//数值转成字符串
var arr = [1,2,3,'r','t'];
console.log(arr.toLocaleString());//1,2,3,r,t
console.log(arr.toString());//1,2,3,r,t
//日期转成字符串
var d = new Date();
console.log(d.toLocaleString());//2018/1/25 下午4:32:09
console.log(d.toString());//Thu Jan 25 2018 16:32:09 GMT+0800 (中国标准时间)
- valueOf() : 用于返回指定对象的原始值。JS的许多内置对象都重写的该函数,以实现更适合自身的功能需要,因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同。
对象 | 返回值 |
Array | 数组实例对象 |
Boolean | 布尔值 |
Date | 以毫秒数存储的时间,从1970-1-1午夜开始计算 |
Function | 函数本身 |
Number | 数值 |
Object | 对象 本身 |
String | 字符串值 |
//Array 返回数组对象本身
var arr = [1, "e", 3, true, "lxm"]; console.log(arr.valueOf()===arr);//true
//Date: 当前时间距1970年1月1日午夜的毫秒数
var d = new Date(); console.log(d.valueOf());//1516869945129
console.log(d.toString());//Thu Jan 25 2018 16:45:45 GMT+0800 (中国标准时间)
//Number: 返回数值本身
var num = 33234.66; console.log(num.valueOf());//33234.66
//布尔值:返回true or false console.log(false.valueOf());//false
console.log(true.valueOf());//true
console.log(typeof true.valueOf());//boolean
//Function: 返回函数本身
function f(){}
console.log(f.valueOf() === f);//true
//Object: 返回对象本身
var obj = {};
console.log(obj.valueOf() === obj);//true
//String: 返回字符串值
var str = "linxiaomei";
console.log(str.valueOf() === str);//true