创建对象、对象里面还有对象
利用函数的方法让对象内部套嵌多个对象,并且每当我们传入新的值进去就会产生一个新的对象。
<script> //<script>标签,我们编写的所有js代码都要放在这个标签内部才能使用。
//这个Room表示在取一个叫做Room变量的空间,但是前面没有声明这个变量,所以系统就会隐示的声明一个变量 var Room;
//Room这个空间取来后就给他赋值,附的是“new fn(……)”,new就表示新开辟一个空间,然后执行“fn(……)”,fn加小括号就表示调用fn这个函数。
Room = new fn(200, 100, 90, 80, 50, 40, 10, 10, "red", function fd() {
console.log(666)
});
//调用fn函数就会执行下面函数内部的代码:
function fn(w, h, s, w1, h1, s1, w2, h2, color, play) {
this.w = w; // this.w 这个关键字会在执行这个代码的对象的作用域内去找w这个属性,
this.h = h; //执行这个代码的是new这个空间,明显空间里面没有w这个属性,所以他就会新声明一个w属性,
this.s = s; // 并给他附上w形参传入的实参。也就是也就是200。下面同理。
this.h1 = new fm(w1, h1, s1, w2, h2, color, play); //同样的this.h1创建一新属性,并给他赋值,不过这里附的东西就跟上面的Room一样,
this.h2 = new fm(w1, h1, s1, w2, h2, color, play); //先开辟一个空间,然后再调用fm函数。
this.h3 = new fm(w1, h1, s1, w2, h2, color, play);
function fm(w1, h1, s1, w2, h2, color, play) { //到了fm函数这里就相当于重复上面的方法来 开辟空间,给空间添加属性
this.w1 = w1; //这样就可以循环下去,就可以让一个对象内套嵌多个对象。
this.h1 = h1;
this.s1 = s1; //这样,只要最开始时Room传入的参数改变一下,Room的名字改变一下就可以创建不同的拥有多个内部对象的对象了。
this.computer1 = new fs(w2, h2, color, play);
this.computer2 = new fs(w2, h2, color, play);
this.computer3 = new fs(w2, h2, color, play);
function fs(w2, h2, color, play) {
this.w2 = w2;
this.h2 = h2;
this.color = color;
this.play = play;
};
};
};
console.log(Room);
console.log(Room.h1.computer1.color);
console.log(typeof(Room));
</script>