用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. Coursera, Deep Learning 4, Convolutional Neural Networks, week3, Object detection

    学习目标 Understand the challenges of Object Localization, Object Detection and Landmark Finding Underst ...

  2. 第26月第28天 avplayer cache

    1.urlsession https - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticati ...

  3. Kaldi中的Chain模型

    Chain模型的训练流程 链式模型的训练过程是MMI的无网格的版本,从音素级解码图生成HMM,对其使用前向后向算法,获得分母状态后验,通过类似的方式计算分子状态后验,但限于对应于转录的序列. 对于神经 ...

  4. 【译】第七篇 SQL Server安全跨数据库所有权链接

    本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  5. 分页插件通用处理,以asp.net mvc为例

    Model: public class PaggerModel { public PaggerModel() { BarSize = ; } public PaggerModel(int total, ...

  6. JVM内存分配及GC流程

    -verbose 这是查询GC问题最常用的命令之一,具体参数如: -verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断. -verbose:gc 输 ...

  7. FLASK-----基本知识(一)

    中文文档(http://docs.jinkan.org/docs/flask/) 英文文档(http://flask.pocoo.org/docs/0.11/) FLASK介绍 Flask是一个基于P ...

  8. Java基础6-多态;匿名内部类;适配器模式

    昨日内容回顾 类成员 构造函数:和类同名,没有返回值,可以重载 this(),super() 成员变量: 成员函数: 静态代码块:类加载执行 {}:构造代码块 interface 所有方法都是抽象的 ...

  9. 【ARTS】01_15_左耳听风-20190218~20190224

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  10. CentOS6源码安装VSFTPD3

    还是碰到老问题:安全扫描,由于CentOS6上VSFTPD最高支持到V2.2.2,目前已经是官方支持的最新版本(发布了几年...) 但有安全漏洞,又没法通过限制访问进行控制,只能想办法升级到最新版本了 ...