资深非资深全进,javscript对象模型问题?第一句:var a=new Array();
第二句:var b=new String();
第三句:var c=new Object();首先Array(),String(),Object(),这些内置构造函数,可以理解为类,那么类可以理解为一个将要被仿造的玩具模型,那么这个玩具模型有三个重要的组成部分来构成:(对象),(属性),(方法)那么先来理解第一句:var a=new Array()在该句中,Array()是类即玩具模型,这个typeof(Array())函数返回的是Array对象,由此可以判定里面绝对没有使用this当前对象如果有使用this这个当前对象的话,那么为什么还多次一举再返回一个Array数组对象,所以这里返回的对象是Array数组对象,那么a就会根据玩具模型里的(对象),(属性),(方法)来建设,模型里的对象是数组对象,那么a变量就仿造,那么a就是数组对象,那么a这个数组对象就带有属性和方法.接下来理解第二句:var b=new String()在该句中,String()函数没有返回任何对象,那么它会构造一个当前对象this,也就是原型对象,来作为b建设对象时的参照.那么b根据这个String()模型来仿造模型里的this对象.接下来理解第三句:var s=new Object()在该句中,document.write (Object())返回的是[object Object][object Object]前面这个小写object表示的是s对象实例,后面这个大写的Object表示的是object()玩具模型所返回的object对象.那么Object()函数返回的是object对象,用typeof(Object())可以知道.那么s变量根据这个Object()函数模型返回的object对象,也仿造出相同的对象,并继承属性和方法.
最后问个问题:function kk(){
this.a=123;
}
请问this的当前对象指的是哪个,还是自己随便构造一个当前对象出来的?
最后问一个问题:<script language="javascript">
function kk(){
}
var a=new kk();
a.s=123;
document.write (a.s);
</script>
由于kk()里面没有this原型对象来作访造,为什么a可以变成对象?而且还可以a.s=123;
不是说只有kk()函数里(有原型this)或(有返回对象),a才可以是对象吗?为什么没有任何的参照对象,a可以成为对象?请指教!

解决方案 »

  1.   

    “var a=new Array()在该句中,Array()是类即玩具模型,这个typeof(Array())函数返回的是Array对象,由此可以判定里面绝对没有使用this当前对象 ”去看ECMA-262文档或者找基本理论一点的关于JavaScript的书籍看看。
      

  2.   

    >>理论一点的关于JavaScript的书籍
    都有哪些理论一点的?推荐几本 ...
      

  3.   

    var life = {};
        for(life.age = 1; life.age <= 3; life.age++)
        {
            switch(life.age)
            {
                case 1: life.body = "卵细胞";
                        life.say = function(){alert(this.age+this.body)};
                        break;
                case 2: life.tail = "尾巴";
                        life.gill = "腮";
                        life.body = "蝌蚪";
                        life.say = function(){alert(this.age+this.body+"-"+this.tail+","+this.gill)};
                        break;
                case 3: delete life.tail;
                        delete life.gill;
                        life.legs = "四条腿";
                        life.lung = "肺";
                        life.body = "青蛙";
                        life.say = function(){alert(this.age+this.body+"-"+this.legs+","+this.lung)};
                        break;
            };
            life.say();
        };关于最后一个问题:Lz可以看看这段代码,来自《悟透Javascript》。你可能会以为这很搞笑,但确实实现了效果,不信可以试试。原因就是在Javascript中,对象不一定需要一个类,你可以用"an_Object.xxx=Z"这样的形式,给一个对象随时添加属性、方法、子对象 .
      

  4.   


    《JavaScript 高级程序设计》  Nicholas C.Zakas
      

  5.   

    js要创建一个对象非常简单, 直接 var a = new Object(); 就可以了, 再 a.p1="x" 或 a.f1=function(){alert("y");} 就可以为 a添加属性和方法了
      

  6.   

    这个typeof(Array())函数返回的是Array对象typeof永远返回的是字符串。