JS引用类型之 Object类型

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

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值