2016-04-05 70 views
-2

我很困惑下面的代码。为什么是“set:”而不是return语句?如何调用set函数?由于Javascript:创建一个对象而不是return语句?这个怎么用?

BrainBrowser.createTreeStore = function() { 

var tree = {}; 

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

如果是整事情没有任何意义。它所做的只是分配给一个未使用的局部变量(称为'value')。我在你的代码中猜测它也有其他的东西。假设你已经完成了像'var treeStore = BrainBrowser.createTreeStore();'这样的事情,你可以根据它实际上对参数做些什么来调用它,像'treeStore.set(3,'little','arguments')''。 – Paulpro

+0

什么是混淆? return语句在那里,它返回一个对象,它的属性恰好是一个函数,所以你可以稍后做一些像BrainBrowser.createTreeStore()。set() – Eihwaz

+0

@Paulrpo:在这种情况下,该集合:必须是在return语句里面? –

回答

0

这是一种二传手/吸气定义createTreeStore,如果你想要这个对象的多个行为,当用户设置的值(或读取值)使用它。

例如:

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"; 

打开console你会看到日志:

Thanks for new value! 

在这里阅读更多:http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/

相关问题