老师,实例化那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>1
收起
正在回答
2回答
你好,同学指的是哪里不传参呢,建议描述具体一些,便于准确定位问题所在。
给你举一个加不加括号区别的例子,实例化的时候不赋值给变量,直接调用属性:

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

(2)第二个输出结果:

因为new 的运算优先级要小于点调用的运算优先级 ,new Cat.age执行顺序为:先执行Cat.age,此时返回结果为undefined;后执行new,因new后面必须跟构造函数,所以new undefined会报错。
在 new实例化的时候后面的括号不是执行的意思,是将优先级提升上去了,所以可以在声明时立即调用对象的属性和方法,所以new Cat.age代码相当于new (Cat.age),而new Cat().age相当于(new Cat()).age。
自己可以再理解下,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星