正在回答
function add(){ //函数1 } function add(){//函数2 }
你没明白构造函数的意义
第一:构造函数的大小写并不影响它是不是构造函数对不对?
那你可以说明上面的两个函数哪个是构造函数吗?
不能,因为只有下面这样实例化了你才知道哪个是构造函数。
function add(){ //函数1 } function Add(){//函数2 } new Add();
我们改为大写是为了区分哪个是我们要用来作为构造函数的,这说明我们不new之前,谁都可以是构造函数,注意哦,是谁都可以,说明现在两个都不是构造函数,那你说现在调用这两个函数是调用构造函数吗?当然不是,因为他们要new了之后才能确定谁才是构造函数。
具体的可参考5-8视频 1分16秒 区分 构造函数和普通函数
第二:B选项错是因为调用函数是 函数名+();而构造函数调用是 new +函数名+();
直接调用的意思是说 函数名+()可以调用构造函数,所以B错了,
构造函数的调用它并不是直接调用 而是要实例化。
"因为要先new了以后这个函数才是构造函数,直接调用是普通函数,不是构造函数。"
而且构造函数不是new出来才是构造函数的吧,构造函数本身是可以用字面量,构造函数,变量赋值三个方法来定义,而构造函数可以用new的方法来生成对象,我是这么理解的。不对的地方希望能得到指正
"因为要先new了以后这个函数才是构造函数,直接调用是普通函数,不是构造函数。" 你的解释恰好反应了这个选项有误导性,所有的构造函数都属于普通函数,函数都可以直接调用,构造函数和普通函数不是两个东西,我选择B选项它告诉我B选项是错误的,难道就是说“构造函数不可以直接调用”?
还是会有误导 如果这个选项是错误的 那就是说构造函数到底能不能调用 建议修改
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星