javascript中的Object对象

原创 2013年12月06日 10:35:08
Object是JS种一个超级对象,所有的JS对象都继承自Object,该对象包含有一下方法:


constructor:如果将constructor比作一个指针的的话,那么它指向的是JS对象的构造器,我们常用constructor来判断自定义对象的类型,以补足Object.prototype.toString.call()和typeof在判断JS对象类型上的不足。PS:constructor是可以读写的,使用的时候要注意是否被覆盖。
var o={a:"abc",b:2,f:function(){}};
alert(o.constructor); //function Object(){[native code]}
alert(o.constructor===Object);
alert(o.f.constructor); //function Function(){[native code]}
alert(o.f.constructor===Function); //true
function Person(){this.name="person";}
var person = new Person();
alert(person.constructor); //function Person(){this.name="person";}
alert(person.constructor===Person); //true

toString: 该方法返回的是调用对象的字符串表示,Object.toString返回[object Object],JS的原生对象都覆盖了Object的toString方法,同时我们也可以在自定义对象中覆盖Object的toString;
alert(oo.toString()); //[object Object]
var d=new Date();
alert(d.toString()); //Tue Dec 03 2013 23:43:13 GMT+0800 (中国标准时间)
var c=function(){var str = "hello";};
alert(c.toString()); //function(){var str = "hello";}
var o={a:"abc",b:2,toString:function(){return "我覆盖了toString";}};
alert(o.toString()); //我覆盖了toString
通过动态调用Object.prototype.toString的方法可以返回标准的[object ClassName]格式,我们通常使用该方法用来判断原生JS对象的类型。
function classof(o){
	if(typeof o == "undefined") return "Undefined";
	return Object.prototype.toString.call(o).slice(8,-1);
}
alert(classof(null)); //Null
alert(classof(new Date())); //Date
alert(classof(undefined)); //Undefined
alert(classof(new Object())); //Object
alert(classof((function(){}))); //Function
alert(classof(true)); //Boolean
alert(classof(1));//Number
alert(classof("aa"));//String

valueOf:该方法和toString方法的一般都返回相同的值,只有在Date对象的时候,会有所不同;
var d = new Date();
alert(d.toString()); //Wed Dec 04 2013 00:24:58 GMT+0800 (中国标准时间) 
alert(d.valueOf()); //1386087898847

toLocaleString() 返回对象的一个本地化字符串。对于JS的原生对象来说toString和toLocaleString一般都返回相同的值,Array , Date和Number的返回值会有所不同。 
var arr = [1,2,"123",new Date()];
alert(arr.toString()); //1,2,123,Wed Dec 04 2013 00:47:12 GMT+0800 (中国标准时间) 
alert(arr.toLocaleString()); //1,2,123,2013年12月4日 上午12:47:12 
var d = new Date();
alert(d.toString()); //Wed Dec 04 2013 00:47:12 GMT+0800 (中国标准时间) 
alert(d.toLocaleString()); //2013年12月4日 上午12:47:12 
var n = 464645.515;
alert(n.toString()); //  464645.515 
alert(n.toLocaleString()); //  464,645.515 

hasOwnProperty:检测是否对象的本地成员,常用于检查是否为对象本身的一个成员,如果该属性或者方法是该 对象自身定义的而不是器原型链中定义的 则返回true;否则返回false;
alert("Test String".hasOwnProperty("split"));// 得到false, 因为不能检测原型链中的属性  


alert(String.prototype.hasOwnProperty("split"));// String对象的原型上本来就有这个属性,自然返回true 


alert(({fnTest:function(){}}).hasOwnProperty("fnTest")); // 返回true,因为不是检测原型中的属性 

isPrototypeOf:用来判断指定对象obj1是否在另一个对象obj2的原型链上,是则返回true,否则返回false。 

function Person(){}
var person = new Person();

function P2(){};
P2.prototype=new Person();
P2.prototype.b="B";
var p = new P2();


alert(P2.prototype.isPrototypeOf(p));  //true p作为P2的实例对象,P2.prototype在p的原型链上
alert(Person.prototype.isPrototypeOf(p)); //true P2的原型对象指向一个Person的实例对象,则Person.prototype在p的原型链上
alert(Object.prototype.isPrototypeOf(p)); //true JS中的所有对象都继承自Object,则Object.prototype在p的原型链上

propertyIsEnumerable:通过该方法我们可以检测出一个对象成员是否是可遍历的,格式:object.propertyIsEnumerable(proName)

如果 proName 存在于 object 中且可以使用一个 For…In循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。典型地,预定义的属性不是可列举的,而用户定义的属性总是可列举的。

propertyIsEnumerable 属性不考虑原型链中的对象。


Javascript Object对象方法详解

一、Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数。可以在程序运行时为Javascript对象随意添加属性...
  • aoshilang2249
  • aoshilang2249
  • 2016年06月29日 15:47
  • 1262

JavaScript 对象字面量(object literal)

什么是字面量 用来为变量赋值时的常数量 对象字面量 对象字面值是封闭在花括号对({})中的一个对象的零个或多个”属性名:值”列表。var person={ name:"Jack", ...
  • YukyCookie
  • YukyCookie
  • 2016年11月27日 23:14
  • 911

javascript基础--对象(Object)封装

引言 说到对象,我想到一个成语叫作谈虎色变,对象应该说是javascript中最难得一部分,原因呢,首先,js作为函数式编程语言,对象的实现方式跟java,c,c++等面向对象设计语言不一样;其次...
  • csdn_kingboss
  • csdn_kingboss
  • 2017年02月03日 16:21
  • 311

JavaScript 并非所有的东西都是对象

原文:JavaScript values: not everything is an object 译文:JavaScript 并非所有的东西都是对象 译者:justjavac ...
  • JustJavaC
  • JustJavaC
  • 2012年12月25日 13:29
  • 1952

javascript 遍历一个对象object 有时会用到

用map转成json数据后,可能要连map的key一块打出来,而且map的大小还是不一定的,这个时候就可以用这个函数,而且灰常的好用  function allPrpos(obj) { ...
  • peng_wu01
  • peng_wu01
  • 2010年05月08日 10:52
  • 7473

JS 计算Object长度

在我们日常开发中,对象的使用频率很高,我们计算数组的长度是非常方便的,但是如何计算对象的长度呢? 假如我们有一个图书馆的项目,项目中有一组图书和作者,像下面这样: 1 var book...
  • zhenyu5211314
  • zhenyu5211314
  • 2016年07月31日 22:02
  • 9104

js打印Object对象,

方法如下: function writeObj(obj){  var description = "";  for(var i in obj){  var property=obj[i]; ...
  • The_Thinnest
  • The_Thinnest
  • 2017年03月20日 13:45
  • 788

JavaScript 基本数据类型和Object 转换

JavaScript中的数据类型分为两种:基本数据类型和对象类型,其中对象类型包含对象,数组,以及函数。 基本数据类型 在JavaScript中,包含三种基本的数据类型,字符串(String),数...
  • yn49782026
  • yn49782026
  • 2012年09月18日 09:50
  • 2961

javascript Image对象

在做一些tips效果,或者是一些图片浏览效果时,图片开始是隐藏的,当用户进行一定的操作时,图片会根据需要显示出来。但图片文件都相对比较大,如果一下子都显示出来,很耗时间和流量,如果都不显示,等触发一定...
  • ebw123
  • ebw123
  • 2012年12月24日 16:00
  • 6663

JavaScript中的Object,Function和自定义function之间的区别和联系

Javascript中Object,Function,自定义function详解要理解三者之间的关系必须把下面这张图搞懂。 理解这个图三者之间的关系迎刃而解。Function 被称为构造器。其实...
  • u013302153
  • u013302153
  • 2016年12月09日 20:18
  • 1565
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript中的Object对象
举报原因:
原因补充:

(最多只允许输入30个字)