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

Javascript 类的疑惑

Javascript 类的疑惑

叮当猫咪 2019-04-16 20:27:52
最近在看Javascript的类varClass=function(){varklass=function(){this.init.apply(this,arguments);};klass.prototype.init=function(){};returnklass;}varPerson=newClass;varperson=newPerson;第一个newClass怎么理解呢,是不是这里newClass相当于只是执行了Class,如果是这样为什么不直接写varPerson=Class();varperson=newPerson;
查看完整描述

2 回答

?
呼唤远方

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

当对一个函数使用new操作符的时候,函数内部的this会指向一个新建的对象。如果函数没有返回值,返回值就会被设定为这个新建的对象。相反,如果这个函数有返回值,那么就会按照返回值返回。
所以,以这题的执行效果而言:是的。两种方法没有区别。
Class()和newClass()主要区别是,后者的this指针指向了一个新的Object,并且该Object的constructor指向Class。不过在本题中,完全没有用到这个this,所以你看不到有何区别。
JavaScript没有“类”的概念,但是有“对象”的概念,是一种很特殊的语言,从无类的角度诠释了“面向对象”。顺便推销一下我的译作《JavaScript面向对象编程指南(第2版)》,希望对你的学习有帮助。
对了,newClass;和newClass();这两个操作符是等价的,没有区别。
                            
查看完整回答
反对 回复 2019-04-16
?
哔哔one

TA贡献1854条经验 获得超8个赞

当构造函数返回一个对象的时候,new操作符返回这个对象,而非原始构造函数产生的实例。参见:new运算符。
在这个例子里newClass和Class()的效果是一样的。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 363 浏览
慕课专栏
更多

添加回答

举报

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