优秀的编程知识分享平台

网站首页 > 技术文章 正文

JavaScript 构造函数与普通函数

nanyue 2025-01-02 18:10:41 技术文章 4 ℃

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

没有区别, 就看使用, 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会打断程序执行
}
最近发表
标签列表