日期:2014-05-16  浏览次数:20363 次

请教 两端js代码的区别
下面两端js代码执行效果是相同的,请问第1)代码的原理是什么?它们之间有什么区别?

1)
<script>
  var func =function(){
      return {
           init : function(){

                     document.writeln("init");
                }
      }
  }();
  func.init();
  </script>

2)
<script>
  var func =new function(){
           this.init = function(){
                     document.writeln("init");
                }
  }();
  func.init();
 </script>

------解决方案--------------------
最终的结果没什么区别, 只是生成结果中间的步骤有点区别
我把步骤分解一下
第一个是一个函数, 函数的返回值是一个对象
function func() {
     var obj = new Object;
    obj.init = function() {document.writeln("init");}
   return obj;
}
var obj = func();
obj.init();
-------------------------------------------------
第二个是一个类, 类实例化后就成了一个对象
function JsClass() {
           this.init = function(){
                     document.writeln("init");
                }
}
var jsObj = new JsClass();
jsObj.init();