<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>小例子</title>
    <script src="jquery.js" type="text/javascript"></script>
    <script language="javascript">
        $(document).ready(function () {
            //初始化
            var regPage = {
                init: function () {
                    $("#submit").click(submit);
                },
                submit: function () {
                    alert("2");
                }
            };            var submit = function () {
                alert("1");
            };            //这里什么意思
            window.regPage = window.regPage || {};            //这里什么意思
            $.extend(window.regPage, regPage);
        });        $(function () {
            window.regPage.init();            window.regPage.submit();
        });
    </script>
</head>
<body>
    <input id="submit" type="button" value="button" />
</body>
</html>谢谢各位帮个小忙。再次谢过了

解决方案 »

  1.   

    //这里什么意思
      window.regPage = window.regPage || {};//这里window.regPage这个就是regPage这个全局变量了,
    后面的||表达式表示,如果前面 的表达式也就是window.regPage不为空,就直接返回,如果为空时取||后面的{},也就是返回一个空对象 
      //这里什么意思
      $.extend(window.regPage, regPage);
    //这里就复制对象 了,将局域变量regPage的所有属性和方法添加到全局变量
      

  2.   


    1、window.regPage = window.regPage || {};
    定义一个全局对象“regPage”,如果代码上文中已经存在同名对象,则把同名对象赋给该对象,否则采用直接值的方式全新定义一个空对象。
    代码相当于(在全局环境中):
    if (regPage) {
        var regPage = regPage;
    } else {
        var regPage = {}
    }2、$.extend(window.regPage, regPage);
    如果上文中存在同名对象“regPage”,那么把该对象所有属性复制到新对象“regPage”,否则复制自身属性。BTW:不清楚方法“$.extend”的内部机制(没看代码),个人不明白LZ写出的代码中这种COPY的目的,是否有这必要。
      

  3.   


    在那函数局域,“regPage”在什么地方呢?
      

  4.   

    在javascript 中允对象无限制添加 方法和属性
      window.regPage 为window添加一个属性 相当于一个全局变量window.regPage = window.regPage || {}; //当window.regpage不存在时,regPage属性赋值为一个空对象逻辑运算符|| 的用法
      有两种用法  左右两边为boolean 的时候 有一个为 true 则返回ture
                如果一个运算数是对象 另一个是boolean 则返回对象
                 如果两个都是对象 则返第一个对象
    &&也是一样,,如果两个都是对象,,返回第二个对象
      

  5.   

    对的 
    JavaScript可以动态申明变量
    window.regPage = window.regPage || {}; 这样就动态申明并定义了第二个
    var empty = {};
    var defaults = { validate: false, limit: 5, name: "foo" };
    var options = { validate: true, name: "bar" };
    var settings = jQuery.extend(empty, defaults, options);结果:
    settings == { validate: true, limit: 5, name: "bar" }
    empty == { validate: true, limit: 5, name: "bar" }