js操作對象屬性用點和用中括號有什么不同


書讀百遍其義自見

學習《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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM