对象(Object)

首页 > JavaScript基本对象 > 对象(Object)

目录

■ 一览

constructor, eval(), Object(), prototype, toString(), valueOf()

定义类

JavaScript 里除了本身就有的,用户也可以通过 function 自定义类。下面的例子里定义了 Person 类。这个类拥有 name 和 age 两个属性,以及 toString() 方法。toString() 是所有类都有的方法,这里重新定义了此方法应该执行的处理,这种行为叫做重写

function Person(name, age) {
    this.name = name;
    this.age = age;
    this.toString = function() {
        return (this.name + " / " + this.age);
    }
}

Person() 函数是 Person 类的构造函数。要生成 Person 对象需要使用 new 运算符。

var p1 = new Person("xiaoli", 26);
document.write(p1.name + "<br>");
document.write(p1);   // write()会自动调用toString()

也可以用像下面这样更加简易的方法生成对象。

var xx = { name: "xiaoli", age: 26 };
document.write(xx.name + "<br>");
document.write(xx.age + "<br>");

■ 对象

object = new Object()

new 运算符生成对象。所有类的对象都可以使用下面列出的属性和方法。

object.constructor

代表用来生成对象的构造函数。

Object.prototype.newName

动态定义对象的新属性。

Date.prototype.type = null;
dd = new Date();
dd.type = "开始时间";
document.write(dd.type);
object.eval(string)

string 当作 JavaScript 代码运行。在 JavaScript 1.4 中被删除。请使用 eval() 代替它。

object.toString([radix])

把对象转换成字符串。根据对象种类的不同以及 JavaScript 版本的不同,生成的字符串也不同。此方法在某些把对象转换成字符串的情况下会自动被调用。也可以像下面这样重写 toString()。

// 把日期转换成 YYYY/MM/DD HH:MM:SS 形式
function myToString() {
  var year = this.getFullYear();
  var mon = this.getMonth() + 1;
  var date = this.getDate();
  var hour = this.getHours();
  var min = this.getMinutes();
  var sec = this.getSeconds();

  if (mon < 10) { mon = "0" + mon; }
  if (date < 10) { date = "0" + date; }
  if (hour < 10) { hour = "0" + hour; }
  if (min < 10) { min = "0" + min; }
  if (sec < 10) { sec = "0" + sec; }

  return(year + "/" + mon + "/" + date +
    " " + hour + ":" + min + ":" + sec);
}
Date.prototype.toString = myToString;
dd = new Date();
document.write(dd);   // 以 YYYY/MM/DD HH:MM:SS 形式显示
object.valueOf()

以基本类型取得对象的值。如为 Number 对象则取得数值,如为 String 对象则取得字符串,如为 Date 对象则取得 getTime() 的返回值。

※本章讲述的类、对象、继承、构造函数等概念来自面向对象(Object Oriented,OO)的编程思想,如果不明白的话请自行搜索一下。