当且仅当使用JavaScript时,如何计算变量?

前端之家收集整理的这篇文章主要介绍了当且仅当使用JavaScript时,如何计算变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我现在正在做的.
var foo = function() {
  var x = someComplicatedComputationThatMayTakeMoreTime();
  this.foo = function() { return x; };
  return x;
}

它工作,但只有当foo被称为像这样的功能

foo();

但是如果我想把它称为具有值的正常变量怎么办?我可以修改代码

var foo = function() {
  var x = someComplicatedComputationThatMayTakeMoreTime();
  this.foo = x;
  return x;
}

这将允许我只将其称为一次函数,然后作为常规变量.但它仍然不是我想要的.加上如果它意外地被作为一个函数调用,返回错误就会变得复杂.

这甚至可能在JavaScript?

BTW,这是一个Chrome / Firefox扩展,所以IE兼容性没有关系.

结束使用toString,因为getter不允许我重新定义整个属性,一个函数必须与它相关联.而ToString语法更清晰.

解决方法

如何使用toString?
var foo = function() {
  function someComplicatedComputationThatMayTakeMoreTime() {
        //your calculations
  }
  return {
      toString: function() { 
           return someComplicatedComputationThatMayTakeMoreTime(); 
      }
  }
}

更多约Object-to-Primitive Conversions in JavaScript

编辑基于评论.使用单身(我认为是这样):

myObject.prop = (function(){ 
                  function someComplicatedComputationThatMayTakeMoreTime() {
                   //your calculations
                  }
                  return { 
                    toString: function() { 
                     return someComplicatedComputationThatMayTakeMoreTime(); 
                    } 
                  } 
                })()

猜你在找的JavaScript相关文章