构造函数和其它函数唯一的区别就是调用方式不同,但构造函数还是函数,不存在定义构造函数的特殊语法,任何函数都可以通过new操作符来调用,只要用new操作符来调用它就可以作构造函数;但是任何函数也可以不通过new 操作符来调用,这样就和普通的函数没有区别。
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=function(){
console.log(this.name);
};
}
//用new操作符来调用
var person=new Person("jim",26,"software eng");
person.sayName();
console.log(person.name);
//作为普通函数的调用方法
Person("jack",31,"Doctor");
window.sayName();
console.log(window.name);
//作为普通函数的调用方法2、用this指针来调用,因为这个时候this等于window
Person("xiaofang",33,"yanyuan");
this.sayName();
console.log(this.name);
//在另一个对象的作用域中调用
var o=new Object();
Person.call(o,"dada",25,"paopao"); //这里用了个回调内置函数call
o.sayName();