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

在命名规则上,构造函数一般是首字母大写,普通函数遵照小驼峰式命名法。

在函数调用的时候:

function fn() { }

 构造函数:1. new fn( )

2 .构造函数内部会创建一个新的对象,即f的实例

3. 函数内部的this指向 新创建的f的实例

4. 默认的返回值是f的实例

 普通函数:1. fn( )

2. 在调用函数的内部不会创建新的对象

3. 函数内部的this指向调用函数的对象(如果没有对象调用,默认是window)

4. 返回值由return语句决定

构造函数的返回值

有一个默认的返回值,新创建的对象(实例);

当手动添加返回值后(return语句):

1. 返回值是基本数据类型-->真正的返回值还是那个新创建的对象(实例)

2. 返回值是复杂数据类型(对象)-->真正的返回值是这个对象

看一个常见的面试题

 1 <script>
 2     function foo() {
 3         var f2 = new foo2();
 4         console.log(f2);    //{a: 3}
 5         console.log(this); //window
 6         return true;
 7     }
 8     function foo2() {
 9         console.log(this); //foo2类型的对象 不是foo2函数
10 //        this.age = 30;
11         return {a: 3};
12     }
13     var f1 = foo();
14     console.log(f1); // true
15 </script>
时间: 2024-08-09 05:08:07

普通函数和构造函数的区别的相关文章

轻松理解js的函数和构造函数的区别

如何轻松理解js的函数和构造函数的区别,这是个一直头大的问题,很多例子都没有清晰的描述清楚.. 在这里,我就用平常的道理来阐述一下,希望能理解清楚. 从这里开始入手吧 这是普通函数的定义和调用方式.看起来没什么特别的,但是往下看就有奇怪的东西了. 再做一个: 你没发先一个很奇怪的现象吗? 你的这个函数里面并没有返回什么,也就是没有return ,但是你调用的时候却可以接受啊. 如:var p=new Person('niexiaoqian'); alert(p.name); //niexiaoq

普通函数、构造函数

普通函数和构造函数的区别 this指向不同(构造函数的this指向创建的对象实例上) 调用方式(构造函数 调用需要new) 命名方式(构造函数首字母大写,普通函数使用驼峰法命名) 普通函数(驼峰命名 eg:personNew) function add(a,b){ retrun a+b; } add(1,2); console.log(add(1,2)); //3 构造函数(必须大写) function Person(name,age){ this.name = name; this.age =

浅析普通函数与构造函数

对于搞明白什么是普通函数与构造函数,首先我觉得我们应该对函数有一定的了解才行: 函数的作用就是封装一段可以重复执行的代码片段 那么为了区分这两个概念,我将它们作一个比较来说比较好: 第一点:从命名规范上来看(并不是主要区别) function personNum(){}  personNum();  //这是普通函数,它命名的规范一般采用驼峰命名法(首字母小写) Function PersonNum(){}  var p=new PersonNum()  p(); //这是构造函数,规范命名一般

普通函数和构造函数

arr=[1,3,5]arr.toString-->"1,3,5"var a={name:"abc"};a.toString-->[object,object]; 构造函数和普通函数构造函数:function Student(){}引用var p=new Student(); 执行步骤1.先创建一个对象o2.给对象赋值(this),执行各种操作 this.a="" 3.返回这个对象o 区别1.函数内部会创建一个对象2.函数内部this

C#虚函数和接口的区别

接口只能声明不能实现,虚函数可以. 接口:对外提供可以访问的函数叫接口.虚函数不需要被强制重写,其本身含有实现部分. 抽象类:指派了派生类必须实现的函数(纯虚函数),不然编译不通过. 虚函数的限制:    1.虚函数仅适用于有继承关系的类对象,   所以只有类的成员函数才能说明为虚函数.      2.静态成员函数不能是虚函数.      3.内联函数不能是虚函数.      4构造函数不能是虚函数.      5.析构函数可以是虚函数. 接口可以有静态成员.嵌套类型.抽象.虚拟成员.属性和事件

MFC 虚函数与消息映射区别

初学MFC添加函数时,总是纠结于是 Add  windows message handler or Add virtual function 说到底不理解MFC中虚函数与消息处理函数的设计区别 本人理解:虚函数是层层继承的,子类Add virtual function只是去改写相应功能.虚函数一般都是程序框架必须调用的,子类没有改写就会默认调用基类的. 而消息映射只在相应类中添加自己感兴趣的处理函数,不存在继承性.所以没必要把windows消息映射函数设计成虚函数.有需要时程序才会执行这些操作.

函数指针与指针函数返回值的区别

指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针定义: 类型标识符 *函数名(参数表)eg: int *f(x,y);函数指针是指向函数的指针变量,即本质是一个指针变量.int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 函数指针与指针函数返回值的区别,码迷,mamicode.com

[转载]虚函数在构造函数中,已经失去了虚函数的动态绑定特性

class A { public: A() { Print(); } virtual void Print() { printf("A is constructed.\n"); } }; class B: public A { public: B() { Print(); } virtual void Print() { printf("B is constructed.\n"); } }; int _tmain(int argc, _TCHAR* argv[])

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

问题 什么是构造函数?构造函数与普通函数区别是什么?用new关键字的时候到底做了什么?构造函数有返回值怎么办?构造函数能当普通函数调用吗? thisthis永远指向当前正在被执行的函数或方法的owner.例如: 1 2 3 4 5 function test(){   console.log(this); } test(); //Window {top: Window, window: Window, location: Location, external: Object, chrome: O