我有一个像这样的html页面
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="JScript2.js" type="text/javascript"></script>
<script src="JScript.js" type="text/javascript"></script>
<title></title>
</head>
<body >
<div ><input type=text id="uxTextBox" /></div>
</body>
</html>
和 2 个像这样的 JavaScript 文件
/// <reference path="JScript.js"/>
/// <reference path="jquery-1.3.2-vsdoc.js"/>
/// <reference path="jquery-1.3.2.js" />
$(document).ready(function() {
referral.PopulateTextBox();
}
====第一个文件结尾==========文件
/// <reference path="jquery-1.3.2-vsdoc.js"/>
/// <reference path="jquery-1.3.2.js" />
var referral = new Referral();
$(document).ready(function() {
function Referral() {
this.PopulateTextBox = function() {
$("#uxTextBox").text("some text");
}
}
}
问题是这两个 jquery 文件似乎都没有执行。我试图通过调用另一个 js 文件来填充一个对象,然后将值返回到 html 文件
有什么想法吗?
最佳答案
这是关于作用域的,JavaScript 具有函数作用域,因此您在 $(document).ready
回调函数中执行的所有变量和函数声明只能在该作用域中访问。
例如:
$(document).ready(function() {
function Referral() {
// ...
}
// Referral is accessible here
});
// But not here
您可以声明您的推荐
constructor function在全局范围内,因为您打算从多个文件中使用它。
如果您不喜欢全局变量,您可以实现命名空间技术:
- JavaScript Namespacing (很棒的文章,有很多选择)
- Namespacing your JavaScript (模块模式方法)
有关范围的更多信息:
关于javascript oo 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1844927/