JavaScript中构造函数与普通函数的区分

发表时间: 2024-03-25 10:01

构造函数和普通函数的区别:

没有区别, 就看使用, new就是构造函数, 函数()就是普通函数调用。

构造器:使用什么元素实例化的对象,元素就称为该对象的构造器

var cat = new Animal();

Animal就称为cat对象的构造器。

普通函数和构造函数内部都可以使用this关键字

function Wolf(){this.eye = "闪闪发光";this.tail = "笔直的尾巴";}Wolf();//普通函数调用, 结果给系统生成两个全局变量eye和taildocument.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);//wangcaidocument.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会打断程序执行}