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

查看:102
本文介绍了javascript - 一道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,有点不太想得明白,控制台输出实例如下:

解决方案

原因其实很简单, 问题就出在for循环里

for(var key in params){
    Object.defineProperty(this, key, {
        get : function() {
            return params[key]
        },
        enumerable : false
    });
}

这里最终key === 'z', 而其他属性的结果都是返回params[key], 也就是params['z']

这篇关于javascript - 一道JS笔试题目,不太明白,求讲解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆