書讀百遍其義自見
學習《JavaScript設計模式》一書時,學習工廠模式這一章節,發現了對象后使用中括號的情況,如下:
var Factory=function(type,content){ if(this instanceof Factory){ //對於一下this后使用中括號不是很明白 var s=new this[type](content); }else{ return new Factory(type,content); } }
不是很明白,百度了一些解釋,如下:
- 中括號運算符總是能代替點運算符。但點運算符卻不一定能全部代替中括號運算符。
- 中括號運算符可以用字符串變量的內容作為屬性名。點運算符不能。
- 中括號運算符可以用純數字為屬性名。點運算符不能。
- 中括號運算符可以用js的關鍵字和保留字作為屬性名。點運算符不能。
/** * 在JavaScript里面 . 可以理解成 的 * 下面的例子中,a.b表示對象a的屬性b,既可以設置也可以讀取 * object[key]=>key為常量時,object[key]等價於object.key,例如:a.b == a['b'] * 特殊的,object[key]=>key為變量時,只能用中括號形式 */ var a = {}; // a.b = 1; a['b'] = 1; c = a.b; // c = a['b']; alert(c);