慕尼黑8414315
2017-04-11 10:05
方法中的参数调换位置之后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
不知道是什么机制,坐等大神解答
不会啊。我换了之后是(欢迎与我联系!白富美,)
jQuery基础(五)一Ajax应用与常用插件
69098 学习 · 416 问题
相似问题