方法中的参数调换位置之后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>
你把方法里的变量名写反了,正确顺序$.extend(objInfo,objMess);。你的顺序$.extend(objMess,objInfo);,把变量名反回来就行了。
在扩展对象时,两个对象将进行合并,当存在相同属性名时,后者将覆盖前者,而objInfo中没有title的属性
var objNewInfo =$.extend(objMess,objInfo); //是后者objInfo把前者相同属性name覆盖了
strTmp += objNewInfo.name + objInfo.title; //objInfo中无该属性,所以为undefined(在js中所有未定义的属性输出显示时是undefined)
这个合并不算是合并,相当于覆盖,后面的obj对象值为空,覆盖了前面的obj对象,当然undefined
不知道是什么机制,坐等大神解答
不会啊。我换了之后是(欢迎与我联系!白富美,)