问答详情
源自:4-9 使用$.extend()扩展Object对象

方法中的参数调换位置之后objInfo.title为什么是undifined?

方法中的参数调换位置之后objInfo.title为什么是undifined?

<!DOCTYPE html>
<html>
    <head>
        <title>使用$.extend()扩展Object对象</title>
        <link href="style.css" rel="stylesheet" type="text/css" />
        <script src="http://www.imooc.com/data/jquery-1.8.2.min.js" type="text/javascript"></script>
    </head>
    
    <body>
        <div id="divtest">
            <div class="title">
                <span class="fl">合并原有对象</span> 
            </div>
            <div class="content">
                <div class="tip"></div>
            </div>
        </div>
        
        <script type="text/javascript">
            $(function () {
                var objInfo = { name: "1" };
                var objMess = { name: "白富美,", title: "欢迎与我联系!" }; 
                var objNewInfo =$.extend(objMess,objInfo);
                var strTmp = "<b>对象 白富美 合并后</b>:<br/><br/>";
                strTmp += objNewInfo.name + objInfo.title;
                //显示在页面中
                $(".tip").show().append(strTmp);
            });
        </script>
    </body>
</html>


提问者:慕尼黑8414315 2017-04-11 10:05

个回答

  • 姜龍道
    2018-11-20 15:54:43

    你把方法里的变量名写反了,正确顺序$.extend(objInfo,objMess);。你的顺序$.extend(objMess,objInfo);,把变量名反回来就行了。

  • 安薄荷
    2018-06-20 16:34:44

    在扩展对象时,两个对象将进行合并,当存在相同属性名时,后者将覆盖前者,而objInfo中没有title的属性

    var objNewInfo =$.extend(objMess,objInfo);    //是后者objInfo把前者相同属性name覆盖了

    strTmp += objNewInfo.name + objInfo.title;        //objInfo中无该属性,所以为undefined(在js中所有未定义的属性输出显示时是undefined)

  • 慕莱坞4644590
    2017-07-07 14:58:11

    这个合并不算是合并,相当于覆盖,后面的obj对象值为空,覆盖了前面的obj对象,当然undefined

  • 苏子晨
    2017-05-17 10:33:11

    不知道是什么机制,坐等大神解答

  • qq_笪打笪_0
    2017-05-06 18:55:14

    不会啊。我换了之后是(欢迎与我联系!白富美,)