什么是__defineGetter __()和__defineSetter __()函数?

Ser*_*lov 29 javascript

每个原型的功能__defineGetter__()__defineSetter__()功能是什么Object

nra*_*itz 13

有关说明和示例代码,请参阅此处MDN文档:

getter是一种获取特定属性值的方法.setter是一种设置特定属性值的方法.您可以在任何预定义的核心对象或支持添加新属性的用户定义对象上定义getter和setter.

如文档中所述(以及@ cwallenpoole),__define[GS]etter__()现在不推荐使用函数.有一个在很多更详细的这篇文章.我相信defineProperty()函数现在是首选语法.


Guy*_*Guy 9

回答你的问题__defineGetter__(),__defineSetter__()是为对象属性创建getter和setter的旧/原始方法.它们允许您将对象的属性用作名称/值对,而在幕后,这些名称/值对由函数支持.

例如,假设您想引用固定范围内的一些随机数.你可以将这些表达为具有最大范围的单词,它看起来像一个属性.

var random = {};
random.__defineGetter__('ten', function() { 
    return Math.floor(Math.random()*10); });
random.__defineGetter__('hundred', function() { 
    return Math.floor(Math.random()*100); });
Run Code Online (Sandbox Code Playgroud)

请注意,虽然上面的示例回答了问题,但您不应使用此解决方案.相反,你应该使用自ES5以来的现代形式的getter和setter:

var random = {
    get ten() { return Math.floor(Math.random()*10); },
    get hundred() { return Math.floor(Math.random()*100); }
};
Run Code Online (Sandbox Code Playgroud)

上述任何一种结构都允许你得到一个这样的随机数:

var myrand = random.ten;
// returns a result in the range 0 to 9
Run Code Online (Sandbox Code Playgroud)