javascript - 创建新对象时如何创建具有定义设置的对象/函数?

标签 javascript

我想做这样的事情:

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.

**

最佳答案

  1. 您可以检查调用者提供了多少个参数。或者检查未定义的值。

    function test(a, b) {
      // both ifs check b was not provided
      if (typeof b === "undefined") {
      }
      if (arguments.length == 1) {
      }
    }
    
  2. 您当前的函数可能无法运行,因为您正在从回调中返回。 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/

相关文章:

javascript - 在 map 函数中使用 promise

javascript格式数字

php - 将 URL 安全文件名的 PHP 脚本转换为 JavaScript?

javascript - 使用javascript调整网页的字体

javascript - Node JS 在 module.exports 中调用一个 "local"函数

javascript - 限制字符并在angular js和ionic之后有三个点

javascript - 在上一个动画完成后用 javascript 重新触发 CSS 动画

javascript - 在ajax成功函数中解析JSON

javascript - 如何让chrome/firefox能够运行parent.frame

javascript - 显示最初隐藏的 iframe