构造方法概念:
构造函数(constructor)是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。
Javascript构造方法的特点:
Javascript并不像Java、C#等语言那样支持真正的类。但是在js中可以定义伪类。做到这一点的工具就是构造函数和原型对象。
- Javascript中创建对象的语法是在new运算符的后面跟着一个函数的调用。
例子:
var obj = new Object();
2.运算符new首先创建一个新的没有任何属性的对象,然后调用该函数,把新的对象作为this关键字的值传递。
例子:
代码一:
var date = new Date();
代码二:
var obj = {};
var date = Date.call(obj);
注意:代码一的伪代码的实现就是 代码二
3.构造函数的作用就是初始化一个新创建的对象,并在使用对象前设置对象的属性。如果定义自己的构造函数,只需要编写一个为this添加属性的函数就可以了。
例子:
function Student (name, age)
{
this.studentname = name;
this.studentage = age;
}
4.可以使用new运算符调用这个函数来创建对象的实例
例子:
var stu = new Student (小明,18);
5.构造函数的返回值
Javascript中的构造函数通常没有返回值。但是,函数是允许有返回值的。如果一个构造函数有一个返回值,则返回的对象成为new表达式的值。在此情况下,作为this的对象将会被抛弃。
生成对象方法一:使用构造函数定义JavaScript对象
例子:
//定义构造函数
function School(name, site)
{
this.schoolname = "学校";
this.schoolsite ="黄土高坡";
}
//使用构造函数产生一个JavaScript对象的实例
var school = new School();
alert(school.schoolname);
执行结果:
构造函数通常可以初始化对象中的一些内容,JavaScript内部提供的一些对象通常需要使用构造函数的方法生成。
生成对象方法二:直接定义创建JavaScript对象
对象可以包含一些属性(函数可以看作带有括号的特殊属性),每个属性有名称和值。名称可以是任何字符串甚至是空。值可以是任何javascript类型,但不能是undefined。
使用定义法定义的对象例子:
var school = {};
school.schoolname = "学校";//属性
school.schoolsite = "黄土高坡";//属性
school.schoolage = 100;//属性
school.startdate = new Date(2005, 12);//对象
school.objsay = function () { alert(this.schoolname + " say : hello world!") };//方法
school.objage = function () { var theage = (new Date().getFullYear()) - site.startdate.getFullYear(); alert(this.name + "已经" + theage + "年了!") }//方法
console.log("schoolname:" + school.schoolname + "\n" +
"schoolsite:" + school.schoolsite + "\n" +
"schoolage:" + school.schoolage + "\n" +
"startdate:" + school.startdate + "\n" +
"objsay:" + school.objsay + "\n" +
"objage:" + school.objage);
执行结果:
注意:上面的方法定义了一个school的对象,并且为其定义了三个属性,与两个个方法。
每个属性与函数前面都要加上对象的名称,否则JavaScript无法判断它是属于那个对象的。