假设我想要三个类型的对象Room
。这三个对象将bedroom
是livingroom
和bathroom
。Room
有两个属性length
和breadth
,和一个方法myFunc
。我使用构造函数方法来创建三个必需的对象:
function Room(len, bred, myFunc) {
this.len = 5;
this.bred = 8;
this.myFunc = alert();
}
var bedroom = new Room();
var livingroom = new Room();
var bathroom = new Room();
问题是,当我运行此脚本myFunc
时,会执行三次,显示警报。我的想法是,由于new
关键字将函数转换为对象,因此它不能执行该对象的方法——typeof new Room
返回"object"
。
我的问题是:
如果该语句
new Room();
将Room()
函数的副本转换为对象,那么这不等同于使用文字符号创建对象吗?如果是,那么不应该var bedroom = new Room();
只将Room 对象的属性分配给卧室对象吗?为什么它执行对象方法?如何在不执行其方法的情况下创建对象?