私は現在、オープンソースのjavascriptプロジェクトコードのいくつかを読んでいますが、オブジェクトのプロパティにアクセスすることもあれば、のようにアクセスすることperson.name
もありますperson['name']
。
私にとって、ドット表記は他のものに対して非常に明確です。ドット表記は読み書きが簡単ですが、ソースコードでは、ドット表記が時々 [] 中括弧表記で使用されていることがわかり、その理由を理解しようとしています。
その理由は何ですか?
私は現在、オープンソースのjavascriptプロジェクトコードのいくつかを読んでいますが、オブジェクトのプロパティにアクセスすることもあれば、のようにアクセスすることperson.name
もありますperson['name']
。
私にとって、ドット表記は他のものに対して非常に明確です。ドット表記は読み書きが簡単ですが、ソースコードでは、ドット表記が時々 [] 中括弧表記で使用されていることがわかり、その理由を理解しようとしています。
その理由は何ですか?
まず、文字列で動的にすることができます:
var key = 'name';
person[key];
第二に、サポートされていない他のシンボルもサポートしています
var key = 'first-name';
person[key];
これがユースケースです(不可能なプロパティ名を持つ)
var obj = {};
> undefined
obj['first name'] = 'Ivan';
> "Ivan"
obj['first name']
> "Ivan"
obj.first\ name
> SyntaxError: Unexpected token ILLEGAL
obj.first name
> SyntaxError: Unexpected identifier
プロパティ名をパラメーターとして渡す場合に、括弧を使用する非常に適切な理由を次に示します。
function showProperty(propertyName) {
alert(person[propertyName]);
}
showProperty('name');
showProperty('age');
'headers'
ドット表記を使用してプロパティにアクセスできますが、.が含まれているため、ドット表記を使用してプロパティにアクセスするrequest
ことはできません。'Content-Type'
request.headers
-
request.headers['Content-Type'] = 'text/html';
たとえば、属性名をパラメーターとして送信するメソッドでこの表記法を使用すると非常に便利です。
var Obj = function(){
this.abc = function(){
alert("abc!!!");
};
this.qqq = function(){
alert("QQQ!!!");
};
}
var showAlert = function(param){
var myObj = new Obj();
myObj[param]();
};
showAlert('abc');