为了账号安全,请及时绑定邮箱和手机立即绑定

js,使用函数过程中,写不写new的区别 ?

js,使用函数过程中,写不写new的区别 ?

C++
qq_遁去的一_1 2019-01-29 11:07:35
js,使用函数过程中,写不写new的区别 
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

  1. new声明的是一个对象,而不是函数 而直接写函数,那就不是对象,是无法调用对象的属性的。

  2. 如果不new,直接调用YourFunc,不做对象的初始化

    如果new,先初始化一个对象,然后调用YourFunc作为初始化函数。

    初始化对象的时候,会把所有YourFunc.prototype的属性方法,copy一份给这个对象;意味着你在YourFunc里面如果调用this.a this.b this.c this.sayHello,都已经被初始化过一次了。


查看完整回答
反对 回复 2019-03-10
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

123456789101112131415161718function YourFunc(){    // beginning of YourFunc'code    if(this instanceof YourFunc){        document.title = "You called [YourFunc] as Class's constructor";                this.sayHello();    }else{        document.title = "You called [YourFunc] as just a Function";    }    // ending of YourFunc's code}YourFunc.prototype={    a : 0,    b : [],    c :{}};YourFunc.prototype.sayHello=function(){    document.title = "hello" + document.title;};

区别是如果不new,直接调用YourFunc,不做对象的初始化;

如果new,先初始化一个对象,然后调用YourFunc作为初始化函数。

初始化对象的时候,会把所有YourFunc.prototype的属性方法,copy一份给这个对象;意味着你在YourFunc里面如果调用this.a this.b this.c this.sayHello,都已经被初始化过


查看完整回答
反对 回复 2019-03-10
  • 2 回答
  • 0 关注
  • 628 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信