JavaScript的Object对象详解

Object类是JavaScript语言的内部数据类型。它是其他JavaScript对象的超类,因此其他对象都继承了Object类的方法和行为。除了用上面所示的Object()构造函数,还可以用Object直接量语法创建并初始化对象。

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)覆盖了该方法,返回的是与对象相关的原始数值。

成熟不是人的心变老,而是泪在眼眶里打转还能微笑。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号