javascript - 为 Javascript 对象中的局部变量创建 setter

标签 javascript

我有以下代码

var loyaltyObject = (function () {
  var data = null, vm, getLoyaltyUrl;

  function getData() {
    $.ajax({
      type: 'POST',
      url: getLoyaltyUrl,
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      success: function (resp) {
        data = resp;
      },
      error: function (resp) {
        console.log('Error fetching offers!');
        console.log(resp);
      }// error(resp)
    });// $.ajax()  
  }

...

  vm = {
    getData: getData,
    getLoyaltyUrl: getLoyaltyUrl
  };

  return vm;
}());

在 document.ready 上我调用

function Init() {
    window.loyaltyObject.getLoyaltyUrl = '@Url.Action("GetLoyaltyData", "Orders")';
    window.loyaltyObject.getData();
}

window.loyaltyObject.getLoyaltyUrl 确实是 URL,但内部 getLoyaltyUrl 仍未定义。

我读了以下内容return a variable as a property关于设置 getter,但是我将如何执行 setter,我要设置的 thisvalue 是什么?

它在大多数浏览器上也具有可比性吗?

最佳答案

您正在将值分配给 vm.getLoyaltyUrl,而不是私有(private)变量 getLoyaltyUrl。该变量没有从对象 vm 继承,因此它永远不会在您的代码中定义

只需更改:

url: getLoyaltyUrl

url: vm.getLoyaltyUrl

简化示例

var loyaltyObject = (function () {
  var data = null, vm;

  function getData() {
   // switched out the ajax for a simple console.log()
   console.log(vm.getLoyaltyUrl)
  }

  vm = {
    getData: getData,
    getLoyaltyUrl: null
  };

  return vm;
}());
// following is exactly what you have
function Init() {
    window.loyaltyObject.getLoyaltyUrl = '@Url.Action("GetLoyaltyData", "Orders")';
    window.loyaltyObject.getData();
}

Init()

关于javascript - 为 Javascript 对象中的局部变量创建 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45023214/

相关文章:

javascript - 如何计算与 php 中的 CRC32 函数兼容的 arrayBuffer(来自 javascript 中的 FileReader)的 CRC?

javascript - 命令 "node ."有什么作用?

JavaScript 'Crossfade' 数组值

javascript - javascript 的语法问题,一个文件中有多个函数

javascript - 是否可以在 HTML5 Canvas 中使用多个图像?

javascript - 通过 JavaScript 访问表单值

javascript - 如何从 Internet Explorer 发送名为 Cookie 的请求 header ?

javascript - 当没有 id 或 class 时,用 javascript 更改标签值

javascript - 样式切换器的下拉菜单

javascript - ng-repeat 内的 AngularJs 表更改值