记住,在杀死信使之前......我正在学习。
我试图“使用”文件B上的函数返回来扩展文件A上的Object。将来我会有几个函数扩展,具体取决于对象。
所以,就是这样。
文件A(A.html)
<script src="B.js"></script>
<script>
var _USER = _USER || {};
_USER.levelOne = {
"Name" : "Jon",
"LastName" : "Doe",
"Age" : 30
};
_USER.levelOne.something = "some";
</script>
档案B(B.js)
function userNickName(nickname) {
var info = {
"NickName" : nickname
};
return info;
};
$(document).ready(function() {
var userNick = $("#inputx").text();
userNickName(userNick);
});
因此,文件B的对象应该用在文件A上。
我在文件A上尝试了以下内容
var nickFunction = userNickName;
jQuery.extend(_USER.levelOne, nickFunction);
我搜索了很多时间,但我找不到解决方案或有用的帮助。我也在思考,因为我将在文件B上有几个函数,在所有函数中创建另一个函数,将对象作为参数传递。
正如我之前所说,这不是一个真实的场景。我正在做一些练习并试图理解。
任何帮助,建议和其他观点都会有所帮助。感谢
答案 0 :(得分:1)
你在这里做了一些奇怪的事情:
在B.js中你打电话:
userNickName(userNick);
但你实际上没有做任何返回值。 userNickName
会返回您想要的对象,因此不清楚您在此处调用此函数的原因。
在A.html中,您将函数保存到新变量,然后将其传递给Object.extend
:
var nickFunction = userNickName;
// nickFunction is now a function, not the result of the function
jQuery.extend(_USER.levelOne, nickFunction);
看起来您想要获取输入的值并将该值添加到昵称。因此,您需要确定应用程序的哪个部分负责从输入中获取值。我认为它应该是A.html而不是B.js因为应该可以在不同的html页面上重用。在这种情况下,A.html需要类似的东西:
// the value to pass to the subject
var userNick = $("#inputx").val(); // note val() not text()
// call the function from B.js and pass it the value
// it will return an object which will then be added to _USER
jQuery.extend(_USER.levelOne, userNickName(userNick));
以上内容应该在A.html中的$(document).ready()
内。
这里有一个代码片段:
// this is in B.js
function userNickName(nickname) {
var info = {
"NickName": nickname
};
return info;
};
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- <script src="B.js"></script> -->
<script>
var _USER = _USER || {};
_USER.levelOne = {
"Name": "Jon",
"LastName": "Doe",
"Age": 30
};
_USER.levelOne.something = "some";
$(document).ready(function() {
var userNick = $("#inputx").val();
jQuery.extend(_USER.levelOne, userNickName(userNick));
console.log(_USER)
})
</script>
<body>
<input id="inputx" type="text" value="Mark"></input>
</body>
&#13;