zoukankan      html  css  js  c++  java
  • 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之后会创建一个实例,并且这个实例是包含实例成员和原型成员的。

  • 相关阅读:
    python笔记26(正则表达式、re模块)
    python笔记24(回顾、复习)
    python笔记25(正则表达式课程一)
    python笔记23(面向对象课程五)
    python(leetcode)-1.两数之和
    python(leetcode)-283移动零
    python(leetcode)-66加一问题
    python(leetcode)-350两个数组的交集
    python(leetcode)-136只出现一次的数字
    python数据结构-数组/列表/栈/队列及实现
  • 原文地址:https://www.cnblogs.com/zhaow/p/9754418.html
Copyright © 2011-2022 走看看