簡體   English   中英

javascript:將變量定義為對象,就像魔術師一樣

[英]javascript: define variable to object like a magic setter

我正在嘗試為對象設置一些變量。 但是我希望像下面的代碼那樣進行設置,有沒有辦法像這樣設置變量?

myObject = {};

myObject.save = function (var) {
  console.log(var);
}

myObject.users.save(); // must output 'users';
myObject.fruits.save(); // output fruit;

save方法只是一個示例方法。 這意味着我需要在變量字符串上鏈接一個方法。

我試圖實現這樣的目標。 任何想法如何實現? 謝謝

您可以為usersfruits列表創建一個List類,並提供常規的列表方法(如addremovesize等)使其實際上像一個列表類,並將save方法定義為原型方法:

var List = (function(){

    function List(listType){
        this.listType = listType;
        this._list = [];
    }

    List.prototype.add = function(item){
        this._list.push(item);
    };

    List.prototype.size = function(item){
        return this._list.length;
    };

    List.prototype.save = function(item){
        console.log(this.listType);
    };

    return List;

})();

然后可以在對象中使用它,例如:

var myObject = {};
myObject.users = new List("users");
myObject.fruits  = new List("fruits");

現在您可以實際調用這兩行代碼:

myObject.users.save(); // output 'users';
myObject.fruits.save(); // output 'fruits';

您還可以為myObject定義一個save方法,並實際調用列表save方法:

myObject.save = function(listType){
    if(myObject[listType] instanceof List){
        myObject[listType].save();
    }
    else{
        console.log("there is no such a list named : " + listType);
    }
};

並這樣稱呼:

myObject.save("users");
myObject.save("fruits");

你可以喜歡

var obj = {
    users: {
        save: function () {
            console.log('Users');
        }
    },

    fruits: {
        save: function () {
            console.log('Fruits');
        }
    },
}

(or)

var obj = {};
obj.users = {};
obj.users.save = function () {
            console.log('Users');
        };
obj.fruits = {};
obj.fruits.save = function () {
            console.log('Fruits');
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM