在对象字面量中,`get` 是什么意思?

3
以下是 Chrome 开发者工具中的代码片段:
WebInspector.DOMStorage.prototype = {
    get id()
    {
        return this._id;
    },

    get domain()
    {
        return this._domain;
    },

    get isLocalStorage()
    {
        return this._isLocalStorage;
    },

    getEntries: function(callback)
    {
        DOMStorageAgent.getDOMStorageEntries(this._id, callback);
    },

    setItem: function(key, value, callback)
    {
        DOMStorageAgent.setDOMStorageItem(this._id, key, value, callback);
    },

    removeItem: function(key, callback)
    {
        DOMStorageAgent.removeDOMStorageItem(this._id, key, callback);
    }
}

WebInspector.DOMStorage是一个函数,在上面的代码中是它的原型。对我来说最奇怪的是以下方法:get id()get something - 我检查了对象原型,只有removeItemgetEntriessetItem被识别了。其他的呢?

1个回答

3

这些是getter。如果你有一个DOMStorage实例,你可以这样做:

var domain = inst.domain;

但是你不能给它赋值(或者你可以赋值,但是值不会改变):

inst.domain = 4; #doesnt change inst.domain

关于此事的更多信息,请参见此链接。只有一些浏览器支持它。


1
请注意,访问器已在ECMAScript 5中标准化,因此大多数现代浏览器都支持它们。也就是说,[FF2+,Safari3+,IE9,Chrome,Opera9.5+](http://robertnyman.com/javascript/javascript-getters-setters.html#regular-getters-and-setters) - user123444555621

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接