构造函数的定义:html
构造函数也能够叫构造对象,配合new表达式一块儿使用。(注意:这个new关键字是必须,若是不加,就不会当成构造函数调用,而只是一个普通的函数。)。从形式上看,一个函数被做为构造函数仍是普通函数执行的惟一区别,是否用new运算符。函数
在JavaScript中,用new关键字来调用定义的构造函数。默认返回的是一个新对象,这个新对象具备构造函数定义的变量和函数/方法。this
function fun(name,age){ this.name=name; this.age=age; } fun.prototype.say=function(){ console.log(this.name); } var fun=new fun("charming",25);
与普通函数相比,构造函数有如下明显特色:spa
一、与new表达式配合使用:var fun=new fun("charming",25);.net
二、函数内部可使用this关键字
在构造函数内部,this指向的是构造出的新对象。用this定义的变量或函数/方法,就是实例变量或实例函数/方法。须要用实例才能访问到,不能用类型名访问。prototype
三、默认不用return返回值code
构造函数是不须要用return显式返回值的,默认会返回this,也就是新的实例对象。固然,也能够用return语句,返回值会根据return值的类型而有所不一样。分两种状况:htm
好比:对象
1.return的是五种简单数据类型:String,Number,Boolean,Null,Undefined。
这种状况下,忽视return值,依然返回this对象。blog
function C2(a, b){ this.p = a + b; this.alertP = function(){ alert(this.p); } return this.p;//此返回语句在C2做为构造函数时没有意义 } var c2 = new C2(2,3); c2.alertP();//结果为5 alert(C2(2, 3)); //结果为5
2.return的是Object
这种状况下,再也不返回this对象,而是返回return语句的返回值。
function Person(name){ this.name=name; return {name:"cherry"} } var person=new Person("sheila"); person.name;//cherry
普通函数:从形式上看,一个函数被做为构造函数仍是普通函数执行的惟一区别,是否用new运算符。
1.不须要用new关键字调用
2.函数内部不建议使用this关键字
参照:
http://www.jb51.net/article/30325.htm
http://www.jb51.net/article/63648.htm
http://www.2cto.com/kf/201402/281841.html
关于构造函数的好文章:
http://www.cnblogs.com/jikey/archive/2011/05/13/2045005.html