用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. Heritrix3.0.0启动介绍

    下面开始使用Heritrix3.0.0 进 入CMD(开始->运行),进入Heritrix3.0.0所在目录,我这里是D:/heritrix/heritrix3.0.0/bin,这里 大家截图也 ...

  2. linux内核之情景分析mmap操作

    进程可以通过mmap把一个已打开文件映射到用户空间. mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset) sta ...

  3. linux 多进程绑定问题

    硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核. ...

  4. 关于getSystemResource, getResource 的总结

    项目中, 有时候要读取当前classpath下的一些配置文件. 之前用的读取配置文件的代码如下 public static Properties loadPropertiesFile(String f ...

  5. iptables之centos6版本常用设置

    默认策略 # iptables -LChain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywh ...

  6. sql_mode引发的数据库问题

    前几天,在本地做完项目,测试完毕后,上传到线上服务器的时候,在做很多写入数据库的操作时,发现全部发生500报错,返回的报错信息是,某个字段没有默认值,写入的时候没有添加这个字段,该字段在数据表中是NO ...

  7. Cryptography I 学习笔记 --- 总结

    在b站上大概的看完了Dan Boneh的密码学,对现代密码学总算有了一个粗浅的认识. 总算能在纸上手写RSA公式并且证明之了,蛤蛤. 总体的感触就是,现代密码学是一个非常博大精深的体系,我等程序员最重 ...

  8. SSH做反向代理

    说实话,我对反向代理这个概念并不熟悉,只是感觉以下要做的事是一个代理的逆向过程,故借此名词一用. 问题场景是这样的:我有两套Linux集群的访问权限,分别为A和B,它们互相独立.其中A.B集群均能访问 ...

  9. Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

    Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的: ...

  10. poj 1185 炮兵阵地 [经典状态压缩DP]

    题意:略. 思路:由于每个大炮射程为2,所以如果对每一行状态压缩的话,能对它造成影响的就是上面的两行. 这里用dp[row][state1][state2]表示第row行状态为state2,第row- ...