• Javascript中new的作用


    关于js中new关键字的理解,先来看个例子:
    像这样创建实例时使用new与不使用new有什么区别????
    function ParasiticPerson(name, age, job) {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.say = function () {
            document.write("Hello,I'm " + this.name + "," + this.age + " years old,i'm a " + this.job+"。<br/>");
        }

        return o;
    }
    var person1 = new ParasiticPerson("wede", 25, "SoftWare"); //使用new
    person1.say(); //Hello,I'm wede,25 years old,i'm a SoftWare。

    var person4 = ParasiticPerson("jack", 35, "SuperStar"); //不使用new
    person4.say(); //Hello,I'm jack,35 years old,i'm a SuperStar。

    //答案1:构造函数与其他函数唯一的区别在于调用它们的方式不同。P146
    //任何函数,只要通过new操作符来调用,那它就可以作为构造函数;而任何函数,如果不通过new操作符来调用,那它就跟普通函数没什么两样。
    //但还是有疑问:既然使用和不使用new都可以,那为什么构造函数创建对象一定要使用new呢?

    上面的答案并不能被真正理解,请看下面的回答:
    答案2:揭晓答案前,先看下面的例子:

    当不用new直接var a2=A1()时,其实只是相当于执行了一遍构造函数,这和执行普通函数一样,本例而言最后会返回false赋值给a2变量;而用new创建的是一个实例对象,这时候var a1=new A1()会忽略构造函数里的return 语句(这是语言的规则指定的,如果用new调用,就会返回这个new之后的构造函数的引用),所以,new之后会创建一个实例,并且这个实例是包含实例成员和原型成员的。

  • 相关阅读:
    C++ Primer学习笔记(三) C++中函数是一种类型!!!
    C++类的成员函数的形参列表后面的const
    C++ const总结
    简单的使用Gson (序列化 和 反序化)
    HTML 获取class里的多个值 和 dataset的使用
    SiteMesh的简单使用
    IDEA 使用LiveEdit插件
    Java 转发和重定向的区别
    Web.xml 定制URL
    java 枚举类(简单使用)
  • 原文地址:https://www.cnblogs.com/zhaow/p/9754418.html
Copyright © 2020-2023  润新知