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会打断程序执行}