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之后会创建一个实例,并且这个实例是包含实例成员和原型成员的。

转载于:https://www.cnblogs.com/zhaow/p/9754418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值