【问题标题】:Can I create a reference to a variable in javascript?我可以在 javascript 中创建对变量的引用吗?
【发布时间】:2013-11-30 10:31:33
【问题描述】:

我尝试了以下方法:

    $scope.qs = {};
    $scope.qh = {};
    $scope.qv = {};
    var qs = $scope.qs;
    var qh = $scope.qh;
    var qv = $scope.qv;
    $scope.getQuestionHeaders = function () {
        var url = '/api/Test/GetQuestionHeaders?id=1';
        $http.get(url)
            .success(function (data, status, headers, config) {
               qh = data.testQuestionHeaders;
               qs = qh[0];

我的数据已分配给 qs,我可以看到其他字段,例如 qs.i、qs.q 等。但是当我使用 chrome 开发人员工具时,我注意到没有任何内容分配给 $scope.qs

【问题讨论】:

标签: javascript


【解决方案1】:

没错。

你实际上是在做:

foo.someProp = 1;
var bar = foo.someProp;
bar = 3; 

你认为foo.someProp 是 3 吗?如果要更新$scope.qs 引用,则需要直接进行,否则只是更改局部变量引用。 qs里面可以修改项目:

qs.foo = 1;
console.log($scope.qs.foo);

【讨论】:

    【解决方案2】:

    您正在覆盖变量 qhqs,因此它们失去了以前的引用。如果你想保持两个变量同步,你必须这样做:

    $scope.qh = qh = data.testQuestionHeaders;
    $scope.qs = qs = qh[0];
    

    更新属性不会影响变量引用:

    qh.witness = true;
    $scope.qh.witness === qh.witness === true; // true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2022-01-23
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多