我想做这样的事情:
function Student (id, class) {
var id = id
var class = class
this.get = function (subject) {
$.ajax({
url: 'myurl',
data: { id: id, class: class, subject: subject },
success: function (r) { return r }
})
}
this.set = function (subject, mark) {
$.ajax({
url: 'myurl',
method: 'post',
data: { id: id, class: class, subject: subject, mark: mark },
success: function (r) { return r }
})
}
}
我的问题是如何修改我的函数,以便我可以创建新学生,如下所示
var s1 = new Student (22, 4) // to set predefined id & class
但是,我想要如下所示的设置和获取(如jquery设置和获取)
s1("math") // to get
s1("history", 70) // to set
**
so i think the answer is not possible to work as an object to store attribute id & class and call like a function without function name. thanks for your answer guys.
**
最佳答案
您可以检查调用者提供了多少个参数。或者检查未定义的值。
function test(a, b) { // both ifs check b was not provided if (typeof b === "undefined") { } if (arguments.length == 1) { } }
您当前的函数可能无法运行,因为您正在从回调中返回。 AJAX(在大多数情况下)是异步的。因此,在您的情况下,您必须添加另一个参数来提供回调。
this.get = function (subject, callback) { $.ajax({ url: 'myurl', data: { id: id, class: class, subject: subject }, success: function (r) { callback(r); } }) }
仅供引用,class
是 ECMAScript 规范的保留关键字。
关于javascript - 创建新对象时如何创建具有定义设置的对象/函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18248678/