构造函数和普通函数的区别:
没有区别, 就看使用, new就是构造函数, 函数()就是普通函数调用。
构造器:使用什么元素实例化的对象,元素就称为该对象的构造器
var cat = new Animal();
Animal就称为cat对象的构造器。
普通函数和构造函数内部都可以使用this关键字
function Wolf(){
this.eye = "闪闪发光";
this.tail = "笔直的尾巴";
}
Wolf();//普通函数调用, 结果给系统生成两个全局变量eye和tail
document.write(eye);
对象.constructor; //获得构造器
//获得对象的构造器
function Wolf(){
this.eye = "闪闪发光";
}
var north = new Wolf();
document.write(north.constructor);//function Wolf(){ this.eye = "闪闪发光"; }
//查看"函数对象"的构造器
function getInfo(){}
document.write(getInfo.constructor);//function Function() { [native code] }
//通过构造器new一个函数出来
//var 函数名字 = new Function(参数, 参数, 参数, ... 函数体);
//function f1(name,addr){document.write(name+'--'+tom)}
var f1 = new Function('name','addr',"document.write(name+'--'+addr)");
f1('linken','newyork');//linken--newyork
return对实例化对象的影响
<script type="text/javascript">
//return对实例化对象影响
//本质没有大的影响。最终结果仍然是一个对象
//但是return后边的代码不给执行
function Animal(){
this.name = "wangcai";
this.hobby = "看家护林";
return 123;//返回信息,终止函数执行
this.age = 5;
}
var black = new Animal();//接收的信息是对象 还是return返回值
document.write(black.name);//wangcai
document.write(black.hobby); //看家护林
document.write(black.age); //undefined
</script>
构造函数不用写return就能帮你返回一个对象,但如果写了return怎么办?
如果return基本类型值, 则无视return, 函数该返回什么就返回什么, 但return会结束构造函数的执行。
如果return引用类型值, 就不返回new出的对象了, 则返回return的定义的返回值, 原有return被覆盖。
function People(name,age,sex){
this.name = name;
this.age = age;
return 100; //返回基本类型值,所以被忽略
this.sex = sex; //return会打断程序执行
}