一道JS笔试题目,不太明白,求讲解


function A(params) {

    params = params || {};

    for(var key in params){


        Object.defineProperty(this, key, {

            get : function() {

                return params[key]

            },

            enumerable : false

        });

    }

}



var a = new A({

    'x' : 'X',

    'y' : 'Y',

    'z' : 'Z'

})


console.log(a.x);

结果是Z,有点不太想得明白,控制台输出实例如下:

https://img.mukewang.com/5c0a32a70001b5f206570611.jpg

烙印99
浏览 436回答 1
1回答

蝴蝶刀刀

原因其实很简单, 问题就出在for循环里for(var key in params){    Object.defineProperty(this, key, {        get : function() {            return params[key]        },        enumerable : false    });}这里最终key === 'z', 而其他属性的结果都是返回params[key], 也就是params['z']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript