javascript - ES6函数的name属性

查看:85
本文介绍了javascript - ES6函数的name属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var person = {
  sayName() {
    console.log(this.name);
  },
  get firstName() {
    return "Nicholas";
  }
};

person.sayName.name   // "sayName"
person.firstName.name // "get firstName"

上面的代码是阮神的ES6一书中,但是我的运行结果person.firstName.nameundefined,因为person.firstName只是一个字符串而不是函数。

附上链接http://es6.ruanyifeng.com/#do...

还有,我按照ES6这种和ES5的get,set写出来的对象也有差异:

    var cart = {
          _wheels: 4,

          get wheels () {
            return this._wheels;
          },

          set wheels (value) {
            if (value < this._wheels) {
              throw new Error('数值太小了!');
            }
            this._wheels = value;
          }
        }
        var book={
            _year:4
        }
        Object.defineProperty(book,'year',{
            get:function(){
                return this._year+1
            },
            set:function(m){
                _year = m*2;
            }
        })

        console.log(cart);
        console.log(Object.keys(cart));
        console.log(Object.keys(book));

想请人帮我解答一下,谢谢了!

解决方案

person.firstName === 'Nicholas'
'Nicholas'.name === undefined
Object.getOwnPropertyDescriptor(person, 'firstName').get.name

这篇关于javascript - ES6函数的name属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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