Javascript:创建一个对象而不是返回语句?这是怎么回事?

Javascript:创建一个对象而不是返回语句?这是怎么回事?,javascript,binary-search-tree,Javascript,Binary Search Tree,我被下面的代码弄糊涂了。为什么将“set:”改为return语句?如何调用set函数?谢谢 BrainBrowser.createTreeStore = function() { var tree = {}; return { set: function() { var value = arguments[arguments.length - 1]; }, 它是一种为createTreeStore定义的setter/getter,如果您希望在用户设置此对象的值(或读取值)

我被下面的代码弄糊涂了。为什么将“set:”改为return语句?如何调用set函数?谢谢

BrainBrowser.createTreeStore = function() {

var tree = {};

return {
  set: function() {
    var value = arguments[arguments.length - 1]; 
  },

它是一种为
createTreeStore
定义的setter/getter,如果您希望在用户设置此对象的值(或读取值)时有更多行为,请使用它

例如:

Object.defineProperty(document.body, "description", {
    get : function () {
       console.log("You are reading my value!!!");
       return this.desc;
    },
    set : function (val) {
       console.log("Thanks for new value!");
       this.desc = val;
    }
});
用法:

document.body.description = "Content container";
打开
控制台
您将看到日志:

Thanks for new value!

在这里阅读更多信息:

如果这就是问题的全部,那么就没有必要再叫它了。它所做的只是分配给一个未使用的局部变量(称为
value
)。我猜在你的代码中它也做了其他的事情。假设您做了类似于
var treeStore=BrainBrowser.createTreeStore()的事情,您可以像
treeStore.set(3,'little','arguments')
一样调用它,这取决于它对参数的实际操作。什么让人困惑?return语句就在那里,它返回一个对象,该对象的属性恰好是一个函数,因此您可以稍后执行类似BrainBrowser.createTreeStore()的操作。set()@paurpo:在这种情况下,set:是否必须在return语句中?