我想创建一个Javascript / JQuery对象,该对象可以容纳许多可以通过HTMl页面访问的功能,但是我一直遇到错误。下面是我的外部JS文件
function AppPage(settings){
function save(formid){
//get form data and save
};
function delete(rowid){
//get rowid and delete via ajax
}
}
现在我想初始化Javascript对象并在整个
中访问它 <!DOCTYPE html>
<html lang="en">
<head>
<script src="../js/app.page.js"></script>
<script type="text/javascript">
$(function(){
var app_page = new AppPage({
base: "http://localhost/app"
});
});
</script>
</head>
<body>
<a onclick="app_page.save('save something')">Example Save Link</a>
<a onclick="app_page.delete('delete something')">Example Delete Link</a>
</body>
当我尝试调用这些函数时,我得到一个错误
ReferenceError:未定义app_page
我怎样才能更好地组织这个?
答案 0 :(得分:0)
你可以这样做:
<script>
var app_page = {
save: function (formid) {
//get form data and save
},
delete: function (rowid) {
//get rowid and delete via ajax
},
}
</script>
然后你可以这样打电话给他们:
app_page.save("formid")
app_page.delete("rowid")
答案 1 :(得分:0)
通过对象,我猜你的意思是构造函数和构造函数的定义&#39; AppPage&#39;不正确。即使你的javascript也不行。
正确的方式
function AppPage(){
this.save = function(formid){
//get form data and save
};
this.delete = function(rowid){
//get rowid and delete via ajax
};
}
var app_page = new AppPage();
如果你想让它成为一个对象,你必须使用以下语法。
var app_page = {
save: function(formid){
//get form data and save
},
delete: function(rowid){
//get rowid and delete via ajax
}
};
**请勿使用&#39;删除&#39;,它是保留的关键字。
答案 2 :(得分:0)
您需要将AppPage的子函数声明为属性。您还需要存储您传入的settings
对象,否则您的子函数将无法引用:
function AppPage(settings){
// Store the settings
this.settings = settings;
// Define the "save" method
this.save = function(formid){
console.log("Save " + formid + " to " + this.settings.base);
};
// Define the "delete" method
this.delete = function(rowid){
console.log("Delete " + rowid + " to " + this.settings.base);
}
}
答案 3 :(得分:-1)
虽然不建议使用全局变量,但在变量初始化之前var
使其成为您在其中定义的函数的本地变量。在app_page之前删除var并且它将起作用。
另一方面,我建议您创建自己的全局对象,在其中定义所有功能。
此外,您的app_page对象中的函数未公开,您必须将它们分配给定义它们的对象,并将它们附加到基础对象,以便获得this.save = function()...