Object类是JavaScript语言的内部数据类型。它是其他JavaScript对象的超类,因此其他对象都继承了Object类的方法和行为。
创建对象的方式如下
1、通过构造函数方式创建对象
// 无参数构造函数 new Object( ) // 有参数构造函数 new Object(value)
参数:
value - 可选的参数,声明了要转换成Number对象、Boolean对象或String对象的原始值(即数字、布尔值或字符串)。JavaScript 1.1之前的版本和ECMAScript Vl不支持该对象。
返回值:
如果没有给构造函数传递value参数,那么它将返回一个新创建的Object实例。如果指定了原始的value参数,构造函数将创建并返回原始值的包装对象,即Number对象、Boolean对象或String对象。当不使用new运算符,将Object()构造函数作为函数调用时,它的行为与使用new运算符时一样。如:
(function(){ var obj1 = new Object(3.14); alert(obj1 instanceof Object); // true alert(obj1 instanceof Number); // true var obj2 = Object(3.14); alert(obj2 instanceof Object); // true alert(obj2 instanceof Number); // true })();
2、通过Object直接量语法创建并初始化对象
(function(){ var obj = { name : "tom", age : 23 }; alert([obj.name, obj.age]); })();
Object对象的属性
1、constructor
对一个JavaScript函数的引用,该函数是对象的构造函数。可以利用constructor来判断对象类型。如下:
var Person = function(name){ this.name = name; // 姓名 }; var Student = function(number){ this.number = number; // 学号 }; Student.prototype = new Person("zhangsan"); var s = new Student(23); alert(s.constructor); // Person的构造函数 alert(s instanceof Person); // true alert([s.name, s.number]); // zhangsan,23 // 如果注释掉 // Student.prototype = new Person("zhangsan"); alert(s instanceof Person); // false(因为s的constructor不再指向Person)
Object对象的方法
1、hasOwnProperty( )
检查对象是否有局部定义的(非继承的)、具有特定名字的属性。如:
var Person = function(name){ this.name = name; // 姓名 }; var p = new Person("tom"); alert(p.hasOwnProperty("name")); // true var Student = function(number){ this.number = number; }; Student.prototype = new Person("tom"); var s = new Student(13); alert([s.name, s.number]); // tom,13 alert(s.hasOwnProperty("name")); // false-因为name来自父类Person
2、isPrototypeOf( )
检查对象是否是指定对象的原型。如:
var Person = function(name){ this.name = name; // 姓名 }; var Student = function(number){ this.number = number; }; var p = new Person("tom"); Student.prototype = p; var s = new Student(13); // p是s的原型? alert(p.isPrototypeOf(s)); // ture
3、propertyIsEnumerable( )
检查指定的属性是否存在,以及是否能用for/in循环枚举。如:
var Person = function(name){ this.name = name; // 姓名 }; var Student = function(number){ this.number = number; }; Student.prototype = new Person("tom"); var s = new Student(13); alert(s.propertyIsEnumerable("name")); // IE=false alert(s.propertyIsEnumerable("number")); // IE=true
4、toLocaleString( )
返回对象地方化的字符串表示。该方法的默认实现只调用toString()方法,但子类可以覆盖它,提供本地化。
5、toString( )
返回对象的字符串表示。Object类提供的该方法的实现相当普通,并且没有提供更多有用的信息。Object的子类通过定义自己的toString()方法覆盖了这一方法(toString()方法能够生成更有用的结果)。
6、valueOf( )
返回对象的原始值(如果存在)。对于类型为Object的对象,该方法只返回对象自身。Object的子类(如Number和Boolean)覆盖了该方法,返回的是与对象相关的原始数值。