【问题标题】:How to use get and set functions javascript object [duplicate]如何使用获取和设置函数javascript对象[重复]
【发布时间】:2019-04-10 13:13:03
【问题描述】:

https://www.w3schools.com/js/js_object_accessors.asp

在此页面上显示了一个对象可以在 javascript 中实现 get 和 setter。但是他们使用与我的代码不同的方式来创建对象。如何在以下代码中实现 get 和 setter:

function Settings()
{
    var fullscreen;

    // get function
    this.fullScreen = function ()
    {
        if(fullscreen === undefined)
        {
            return false
        }
        return fullscreen;
    };


    // set function
    this.fullScreen = function (fullscrn)
    {
        fullscreen = fullscrn;
    };

    // I want to call the set like this: settingsobj.fullScreen = false;
    // I want to call the get like this: var myvar = settingsobj.fullScreen;
}

【问题讨论】:

  • 为什么不使用类?
  • 兼容所有浏览器吗?我不想用 babel 之类的东西来编译。

标签: javascript object get set accessor


【解决方案1】:

您可以获取一个对象并为想要的属性实现setter/getter

var object = {
    fc: undefined,
    get fullscreen () { return this.fc === undefined ? false : this.fc; },
    set fullscreen (v) { this.fc = v; }
}

console.log(object.fullscreen);

object.fullscreen = 1080;

console.log(object.fullscreen);

带有一个实例和一个 provat 变量以及它的 getter 和 setter。

class Settings {
    constructor() {
        var fc;
        Object.defineProperty(this, 'fullscreen', {
            get () { return fc === undefined ? false : fc; },
            set (v) { fc = v; }
        });
    }
}

var instance = new Settings;

console.log(instance.fullscreen);

instance.fullscreen = 1080;

console.log(instance.fullscreen);

【讨论】:

  • 我猜 OP 想要函数格式,而不是对象格式。
  • 是的,因为我希望能够在不定义集合的情况下创建该对象的多个实例,并在每次创建实例时获取。
猜你喜欢
  • 2017-09-05
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多