用new和调用一个函数的差别:假设函数返回值是一个值类型(Number、String、Boolen)时,new函数将会返回这个函数的实例对象。而假设这个函数的返回值是一个引用类型(Object、Array、Funtion)时,new函数和直接调用函数的结果同样。測试代码例如以下:

<script type="text/javascript">
    /*//工厂模式
    function Person(name,age)
    {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.getName = function()
        {
            alert(this.name);
        }
        return o;
    }
    var obj1 = new Person("liwen",25);
    var obj2 = Person("liwen1",25);
    obj1.getName();  //liwen*/        new一个函数的实例对象
    obj2.getName();  //liwen1*/      直接调用

这里new一个函数的对象和直接调用函数产生的结果同样,都能够弹出这个函数的name属性。注意这里函数的返回值是一个Funtion对象

    /*假设一个函数中存在return语句,调用这个函数的时候使用new和不使用new返回的结果是一样的吗?*/
    function Test()
    {
        this.name = 'test';
        return function()
        {
            return true;
        }
    }
    //var test = new Test();   //function(){return true;}      它是Object
    //var test = Test();       //function(){return true;}      它是Function
    //alert(new Test() == Test());   //false     这就奇怪了。两都明明是一样的,都是函数,怎么不同样的,由于js对于Object和Funtion的比較是基于引用的。

    //为了进一步分辨上述情形下两者间的差别,再继续看下面代码
    function Test()
    {
        this.name = "test";
        return "test";
    }
    var test1 = new Test();   //Object 对象,它有一个name 属性,而且返回一个字符串test
    var test2 = Test();    //test    ,它单纯是一个字符串

    /*通过上面的代码,能够得出一个推測:假设函数返回值为常规意义上的数值类型(Number、String、Boolean)时,new函数将会返回一个该函数的实例对象,而假设函数返回一个引用类型(Object、Array、Function)时,则new函数与直接调用函数产生的结果同样*/

</script>
网上看的:用new和调用一个函数的差别:假设函数返回值是一个值类型(Number、String、Boolen)时,new函数将会返回这个函数的实例对象。而假设这个函数的返回值是一个引用类型(Object、Array、Funtion)时,new函数和直接调用函数的结果同样。測试代码例如以下:

<script type="text/javascript">
    /*//工厂模式
    function Person(name,age)
    {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.getName = function()
        {
            alert(this.name);
        }
        return o;
    }
    var obj1 = new Person("liwen",25);
    var obj2 = Person("liwen1",25);
    obj1.getName();  //liwen*/        new一个函数的实例对象
    obj2.getName();  //liwen1*/      直接调用

这里new一个函数的对象和直接调用函数产生的结果同样,都能够弹出这个函数的name属性。

注意这里函数的返回值是一个Funtion对象


    /*假设一个函数中存在return语句,调用这个函数的时候使用new和不使用new返回的结果是一样的吗?*/
    function Test()
    {
        this.name = 'test';
        return function()
        {
            return true;
        }
    }
    //var test = new Test();   //function(){return true;}      它是Object
    //var test = Test();       //function(){return true;}      它是Function
    //alert(new Test() == Test());   //false     这就奇怪了,两都明明是一样的。都是函数,怎么不同样的。由于js对于Object和Funtion的比較是基于引用的。

    //为了进一步分辨上述情形下两者间的差别。再继续看下面代码
    function Test()
    {
        this.name = "test";
        return "test";
    }
    var test1 = new Test();   //Object 对象,它有一个name 属性,而且返回一个字符串test
    var test2 = Test();    //test    。它单纯是一个字符串

    /*通过上面的代码,能够得出一个推測:假设函数返回值为常规意义上的数值类型(Number、String、Boolean)时,new函数将会返回一个该函数的实例对象,而假设函数返回一个引用类型(Object、Array、Function)时,则new函数与直接调用函数产生的结果同样*/

</script>

js new一个函数和直接调用函数的差别的更多相关文章

  1. js new一个函数和直接调用函数的区别

    用new和调用一个函数的区别:如果函数返回值是一个值类型(Number.String.Boolen)时,new函数将会返回这个函数的实例对象,而如果这个函数的返回值是一个引用类型(Object.Arr ...

  2. Js 使用new关键字调用函数和直接调用函数的区别

    最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=na ...

  3. Javascript 自动执行函数(立即调用函数)

    开头:各种原因总结一下javascript中的自动执行函数(立即调用函数)的一些方法,正文如下 在Javascript中,任何function在执行的时候都会创建一个执行上下文,因为function声 ...

  4. JS按照指定的周期来调用函数方法

    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...

  5. 用函数的地址调用函数 C++ MFC

    先说一段废话,幸亏我汇编基础(基础 基础 基础)扎实,否则这个问题真的恶心到我了正题  因为有特殊需求, 需要写一个类似于接口的功能,但是因为用到的次数不多再加上C++写接口各种麻烦所以想通过函数的地 ...

  6. shell从函数文件里调用函数

    碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...

  7. [C++程序设计]用函数指针变量调用函数

    指针变量也可以指向一个函数.一个函数在编译时被分配给一个入口地址.这个函数入口地址就称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数 #include <iostream ...

  8. python入门(13)获取函数帮助和调用函数

    Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...

  9. 内置函数:循环调用函数map和filter

    1.map:循环调用函数,前面一定一定要加list,要不然不会被调用 map的格式:list(map(函数名,循环体)) #这里的函数只能写函数名,不要加() list(map(os.mkdir,[' ...

随机推荐

  1. python名词解释(生成器,匿名函数)

    1.生成器:能够保持状态的迭代器,下次进去还是之前出来的状态 http://www.oschina.net/translate/improve-your-python-yield-and-genera ...

  2. AC日记——计算循环节长度 51nod 1035

    最长的循环节 思路: 我们尝试一种最简单的方法,模拟: 如何模拟呢? 每个数,对它模k取余,如果它的余数没有出现过,就补0继续模: 所以,当一个余数出现两次时,当前的长度即为循环节长度: 来,上代码: ...

  3. AC日记——任务查询系统 洛谷 P3168

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  4. TopCoder SRM 675 Div1 Problem 500 LimitedMemorySeries1(分块)

    题意  给定一个长度不超过$5*10^{6}$的数列和不超过$100$个询问,每次询问这个数列第$k$小的数,返回所有询问的和 内存限制很小,小到不能存下这个数列.(数列以种子的形式给出) 时限$10 ...

  5. 详解Tomcat系列(一)-从源码分析Tomcat的启动

    在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...

  6. [java基础] 002 - 位运算符的详解和妙用

    一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...

  7. 执行 innerHTML 里的 <script>

    原文:执行 innerHTML 里的 <script> 背景 有时候我们会有把一整段 HTML 动态塞进页面的需求,例如渲染了一个模板,从服务器端获取了一段广告代码等.一般情况下我们使用 ...

  8. 【hibernate】主键生成策略使用UUID报出如下警告:org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values;

    主键生成策略使用UUID报出如警告如下: 控制台- 2017-11-24 18:40:14 [restartedMain] WARN org.hibernate.id.UUIDHexGenerator ...

  9. 学习PHP:PHP提取的时间出现不准确

    php函数date("Y-n-d   H-i-s");   输出的时间与当地时间居然相差了8个小时.     原因是从php5.1.0开始,php.ini里加入了date.time ...

  10. api 接口开发理论 在php中调用接口以及编写接口

    如: http://localhost/openUser.php?act=get_user_list&type=json 在这里openUser.php相当于一个接口,其中get_user_l ...