老师,实例化那Cat后面的括号好像加不加都能运行?

老师,实例化那Cat后面的括号好像加不加都能运行?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>6-4</title>
</head>
<body>
    <script>
        //  补充代码 
        function animal(name, num){
         this.name = name;
         this.num = num;
        }
        function Cat(){};
        Cat.prototype = new animal('hellokitty',3);
        Cat.prototype.info = function(){
         alert("name: " + this.name + "--" + "num: " + this.num);
        }
        var cat = new Cat();//老师,这里的括号有没有好像都行?
        cat.info();

    </script>
</body>
</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,同学指的是哪里不传参呢,建议描述具体一些,便于准确定位问题所在。

给你举一个加不加括号区别的例子,实例化的时候不赋值给变量,直接调用属性:

http://img1.sycdn.imooc.com//climg/5dafd11e0972cb9d03160153.jpg

(1)第一个输出结果会报错:

http://img1.sycdn.imooc.com//climg/5dafd13009e881ae05260028.jpg

(2)第二个输出结果:

http://img1.sycdn.imooc.com//climg/5dafd13209f0b7d001390027.jpg

因为new 的运算优先级要小于点调用的运算优先级 ,new Cat.age执行顺序为:先执行Cat.age,此时返回结果为undefined;后执行new,因new后面必须跟构造函数,所以new undefined会报错。

在 new实例化的时候后面的括号不是执行的意思,是将优先级提升上去了,所以可以在声明时立即调用对象的属性和方法,所以new Cat.age代码相当于new (Cat.age),而new Cat().age相当于(new Cat()).age。

自己可以再理解下,祝学习愉快!

好帮手慕星星 2019-10-23 10:48:12

同学你好,

代码实现效果没有问题,很棒哦!

对于本题来说,new实例化后面加不加括号都是可以的,没有问题。

祝学习愉快!欢迎采纳~

  • 提问者 慕勒8522502 #1
    老师,请问是不是不传参的话括号不是必须有的?
    2019-10-23 10:53:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师