创建对象、对象里面还有对象

利用函数的方法让对象内部套嵌多个对象,并且每当我们传入新的值进去就会产生一个新的对象。

 

<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>

posted on 2017-07-05 18:37  YC小杨  阅读(1058)  评论(0编辑  收藏  举报