首页 > js 中 [ ] . 区别 是什么 => 书中这行代码是多余的?

js 中 [ ] . 区别 是什么 => 书中这行代码是多余的?

> test.getName()

> test["getName"]()

追加一下,
在javascript设计模式中有如下代码:

var viewCommand = (function() {
    var tpl = {
        product : [
            '<div>',
                '<img src="{#src#}"/>',
                '<p>{#text#}</p>',
            '</div>'
        ].join(''),
        title : [
            '<div class="title">',
                '<div class="main">',
                    '<h2>{#title#}</h2>',
                    '<p>{#tips#}</p>',
                '</div>',
            '</div>' 
        ].join('')
    },

    html = '';

    function formatString(str, obj) {
        return str.replace(/\{#(\w+)#\}/g, function(match, key) {
            return obj[key];
        });
    }

    var Action = {
        create : function(data, view) {
            if (data.length) {
                for (var i = 0, len = data.length; i < len; i++) {
                    html += formatString(tpl[view], data[i]);
                }
            } else {
                html += formatString(tpl[view], data);
            }
        },
        display : function(container, data, view) {
            this.create(data, view);
            document.getElementById(container).innerHTML = html;
            html = '';
        }
    }

    return function excute(msg) {
        msg.param = Object.prototype.toString.call(msg.param) === "[objet Array]" ? msg.param : [msg.param];
        //Action内部调用方法可能引用this,为保证作用域中的this指向正确,故传入Action
        Action[msg.command].apply(Action, msg.param);
    }
})();

书上原话说“Action内部调用方法可能引用this,为保证作用域中的this指向正确,故传入Action”

但是,经过实验,即

var o = function () {
    var Action = {
        age: 1,
        getAge: function() {
            console.log(this.age);
        }
    }

    return {
        excute : function() {
            Action['getAge']();
        }
    }
    }();
o.excute();

未传入Action,也成功运行并输出。

所以说书中这行代码是多余的?


[] 可以访问带空格属性。


['']支持获取动态属性


都是获取对象的属性,但是当属性是数字开头或者是js关键字的时候只能用[]

【热门文章】
【热门文章】