簡體   English   中英

如何返回JS文字對象的默認屬性?

[英]How to return a default property of JS literal object?

一個JS對象定義如下:

var obj = {
      key1 : {on:'value1', off:'value2'},
      key2 : {on:'value3', off:'value4'}
}

當沒有屬性傳遞obj.key1時,是否有一種棘手的方法, on屬性on選擇默認key1

var key1State = obj.key1; // I want to receive 'value1' here, not obj.key1{...}

是否通常可以在對象定義體中識別在對象調用期間傳遞/詢問哪個屬性(如果有的話)?

我不確定這是否是你需要的,但是使用valueOftoString可能正是你正在尋找的東西。

例如:

var obj = {
      key1 : {on:'value1', off:'value2', toString : function(){ return this.on; }},
      key2 : {on:'value3', off:'value4', toString : function(){ return this.on; }}
}

var key1State = obj.key1; // the object
var key1StateStr = '' + obj.key1; // string "value1"
obj.key1 == "value1"  // true
obj.key1.toString() === "value1"  // true

因此,如果你打算在某個地方使用默認值作為字符串,這可能會有用。

這不能解決您的問題,但您可能會發現它很有用。

使用getters。

var obj = {

  key1 : {on:'value1', off:'value2'},
  key2 : {on:'value3', off:'value4'}, 
  get fooBar () { return this.key1.on }

}

現在obj.fooBar返回keyq.on

我理解你的想法,但認為更好的方法是使用像getState這樣的函數來獲取對象的實際狀態。

var obj = {
  key1: {on:'value1', off:'value2'},
  key2: {on:'value3', off:'value4'}
};

var key1State = getState(obj.key1);
var key2State = getState(obj.key2.off);

function getState(obj) {
  return obj.on || obj;
}

console.log(key1State, key2State);

見codepen。

暫無
暫無

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

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