js对象、对象属性解析

  • 2
  • 36 views
  • A+
所属分类:JS、JQuery 编程技术

Object对象

Object对象包含如下属性和方法,也就意味着一切对象(函数也是对象)都包含如下方法。
每种方法和属性在不同的对象中有不同的作用,并不是每种对象都有使用每个方法的必要。

下面是Object对象的派生对象在使用这些方法和属性时的意义。Object对象只是定义了他们,并没有使用他们。

__proto__属性是保存当前对象的原型对象。对象通过这个属性产生了原型链

Object对象的__proto__ 为空

constructor属性

constructor属性是保存当前对象的构造函数,js通过构造函数来实现对象的实例化。

下面的例子中,constructor保存的就是Object构造函数。

 

1
2
3
4
5
6
7
8
var obj1 = new Object();
obj1.id = "obj1";
var obj2 = {
  "id": "obj2"
};
 
console.log(obj1.constructor);//function Object(){}
console.log(obj2.constructor);//function Object(){}

hasOwnProperty(propertyName)方法

hasOwnProperty方法接收一个字符串参数,该参数表示属性名称,用来判断该属性是否在当前对象实例中,而不是在对象的原型链中。我们来看看下面这个例子:

1
2
3
var arr = [];    //实例化了一个Array对象
console.log(arr.hasOwnProperty("length"));//true
console.log(arr.hasOwnProperty("hasOwnProperty"));//false

在这个例子中,首先通过定义了一个数组对象的实例arr,我们知道数组对象实际是通过原型链继承了Object对象,然后拥有自己的一些属性,我们通过hasOwnProperty方法判断length是arr自己的属性,而hasOwnProperty是在原型链上的属性。

 

isPrototypeOf(Object)方法

isPrototype方法接收一个对象,用来判断当前对象是否在传入的参数对象的原型链上,说起来有点抽象,我们来看看代码。

1
2
3
function MyObject() {}
var obj = new MyObject();
console.log(Object.prototype.isPrototypeOf(obj));  //true

我们知道MyObject是继承自Object对象的,而在JS中,继承是通过prototype来实现的,所以Object的prototype必定在MyObject对象实例的原型链上。

 

propertyIsEnumerable(prototypeName)方法

prototypeIsEnumerable用来判断给定的属性是否可以被for..in语句给枚举出来。看下面代码:

1
2
3
4
var obj = {
    name: "objName"
} 
console.log(obj.propertyIsEnumerable("constructor"));//false

判断“constructor”是否可以被枚举,输出false说明无法被枚举出来。

 

toLocaleString()方法

toLocalString方法返回对象的字符串表示,和代码的执行环境有关。

1
2
3
4
5
var obj = {};
console.log(obj.toLocaleString());//[object Object] 
 
var date = new Date();
console.log(date.toLocaleString());//2016/2/28 下午1:39:27

toString()方法

toString用来返回对象的字符串表示。

1
2
3
4
5
var obj = {};
console.log(obj.toString());//[object Object]
 
var date = new Date();
console.log(date.toString());//Sun Feb 28 2016 13:40:36 GMT+0800 (中国标准时间

valueOf()方法

valueOf方法返回对象的原始值,可能是字符串、数值或bool值等,看具体的对象。

1
2
3
4
5
6
7
8
9
10
var obj = {
  name: "obj"
};
console.log(obj.valueOf());//Object {name: "obj"}
 
var arr = [1];
console.log(arr.valueOf());//[1]
 
var date = new Date();
console.log(date.valueOf());//1456638436303

Number对象

1
2
3
4
5
number.valueOf():返回数学对象的原始值 
number.toExponential(fractionDigits):将数字转换为指数表示形式字符串,fractionDigits指定指数的小数位的位数, 取值区间[0,20].
number.toFixed(fractionDigits):将数字表示成10进制字符串, fractionDigits同上.
number.toPrecision(precision):与toFixed()类同, 只是precision指定的是数字的有效位数, 取值范围[0,21].
number.toString(radix):将number转换为需要的进制字符串形式,radix默认是10.

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • avatar 小猴子 4

      666牛逼

      • avatar 小猴子 4

        好像很厉害的样子