资深进,请问javascript的new创建问题?<script language="javascript">
function kk(){
var as=new Object;
as.k=123;
return as;<-----------------返回实例对象as.
}
var nn=new kk();<--------------这里kk()先返回(实例对象as),再用new创建(as对象实例)的(实例nn)没发生错误.
alert(nn.k);
</script><script language="javascript">
var s=new Object();//s是对象实例
var k=new s;<----------------------------用new创建(s对象实例)的实例k,为什么就发生错误!
</script>
new kk()这里kk()先会返回一个对象实例,为什么从函数里返回出来的对象实例,都可以跟new,如果不是函数里返回出来的对象实例s,一用new,就错误没东西了?请最详细的指教一下.

解决方案 »

  1.   

    因为 new 运算符 必须跟一个 constructor函数.你实例出来的 s 不是一个函数定义,所以出错.
      

  2.   

    function kk(){ 
    var as=new Object; 
    as.k=123; 
    return as; <-----------------返回实例对象as. 

    这里的操作是包在函数定义中,
    在var nn=new kk();之后才会执行。
    new kk();是一步操作,不是先kk();再new操作,我
    想楼主是看晕糊了,呵呵......
      

  3.   

    <script language="javascript"> 
    function kk(){ 
    var as=new Object; 
    as.k=123; 
    return as; 

    var nn=new kk(); 
    alert(nn.k); var s=new Object();//s是对象实例 var k=new s; 
    </script> 
    没有报错啊 楼主拷去运行啊
      

  4.   

    我觉得new 关键字没有看到this所以只运行kk()返回一个对象所以是正确的
    第二个既不是构造函数 没有this 同时也不是函数 所以报错