| zhixin's profileMYspace.comPhotosBlogLists | Help |
|
March 19 JS的学习昨日看到网文《悟透javascript》作者不仅有着非凡的程序功力,知识也十分渊博。 他山之石,可以攻玉。特此留下纪念,以便今后可查询于此。
function Person(name) //带参数的构造函数
{ this.name = name; //将参数值赋给给this对象的属性 this.SayHello = function() {alert("Hello, I'm " + this.name);}; //给this对象定义一个SayHello方法。 }; function Employee(name, salary) //子构造函数 { Person.call(this, name); //将this传给父构造函数 this.salary = salary; //设置一个this的salary属性 this.ShowMeTheMoney = function() {alert(this.name + " $" + this.salary);}; //添加ShowMeTheMoney方法。 }; var BillGates = new Person("Bill Gates"); //用Person构造函数创建BillGates对象 var SteveJobs = new Employee("Steve Jobs", 1234); //用Empolyee构造函数创建SteveJobs对象 BillGates.SayHello(); //显示:I'm Bill Gates SteveJobs.SayHello(); //显示:I'm Steve Jobs SteveJobs.ShowMeTheMoney(); //显示:Steve Jobs $1234 alert(BillGates.constructor == Person); //显示:true alert(SteveJobs.constructor == Employee); //显示:true alert(BillGates.SayHello == SteveJobs.SayHello); //显示:false 这段代码表明,函数不但可以当作构造函数,而且还可以带参数,还可以为对象添加成员和方法。其中的第9行,Employee构造函数又将自己接收的 this作为参数调用Person构造函数,这就是相当于调用基类的构造函数。第21、22行还表明这样一个意思:BillGates是由Person构造的,而SteveJobs是由Employee构造的。对象内置的constructor属性还指明了构造对象所用的具体函数 |
|
|