JavaScript中的普通函数与构造函数比较

本文详细介绍了JavaScript中的构造函数,包括其定义、与new表达式的配合使用、与普通函数的区别等。并通过具体示例展示了如何使用构造函数创建对象,并讨论了构造函数内部this关键字的用法及return语句的不同情形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数的定义:

        构造函数也可以叫构造对象,配合new表达式一起使用。(注意:这个new关键字是必须,如果不加,就不会当成构造函数调用,而只是一个普通的函数。)。从形式上看,一个函数被作为构造函数还是普通函数执行的唯一区别,是否用new运算符。

      在JavaScript中,用new关键字来调用定义的构造函数。默认返回的是一个新对象,这个新对象具有构造函数定义的变量和函数/方法。

function fun(name,age){
  this.name=name;
  this.age=age;
}
fun.prototype.say=function(){
  console.log(this.name);
}
var fun=new fun("charming",25);

    与普通函数相比,构造函数有以下明显特点:

   1、与new表达式配合使用:var fun=new fun("charming",25);

   2、函数内部可以使用this关键字
        在构造函数内部,this指向的是构造出的新对象。用this定义的变量或函数/方法,就是实例变量或实例函数/方法。需要用实例才能访问到,不能用类型名访问。

   3、默认不用return返回值

      构造函数是不需要用return显式返回值的,默认会返回this,也就是新的实例对象。当然,也可以用return语句,返回值会根据return值的类型而有所不同。分两种情况:

   比如:

    1.return的是五种简单数据类型:String,Number,Boolean,Null,Undefined。
    这种情况下,忽视return值,依然返回this对象。

function C2(a, b){
    this.p = a + b;
    this.alertP = function(){
        alert(this.p);
    }
    return this.p;//此返回语句在C2作为构造函数时没有意义
}
var c2 = new C2(2,3);
c2.alertP();//结果为5
alert(C2(2, 3)); //结果为5

  2.return的是Object
   这种情况下,不再返回this对象,而是返回return语句的返回值。

function Person(name){
    this.name=name;
    return {name:"cherry"}
  }
  var person=new Person("sheila");
  person.name;//cherry

 

普通函数:从形式上看,一个函数被作为构造函数还是普通函数执行的唯一区别,是否用new运算符。

     1.不需要用new关键字调用

     2.函数内部不建议使用this关键字


参照:

 http://www.jb51.net/article/30325.htm

http://www.jb51.net/article/63648.htm

http://www.2cto.com/kf/201402/281841.html

关于构造函数的好文章:

http://www.cnblogs.com/jikey/archive/2011/05/13/2045005.html



转载于:https://my.oschina.net/u/2395167/blog/658234

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值