在JSON对象中嵌入ES6箭头函数

时间:2017-07-09 15:35:46

标签: javascript json ecmascript-6

是否可以在JSON对象中嵌入ES6箭头功能?

示例,以下数据格式是否会被视为“有效”?

{
     function:{() => {console.log("executed")}}
}

1 个答案:

答案 0 :(得分:4)

首先,没有JSON对象这样的东西。 JSON是一种文本格式,而不是对象格式。有JSON文本和Javascript对象。这两者完全不同。

根据JSON specification,JSON文本格式不接受函数。 JSON格式字符串中的值在本规范中以速记形式描述如下:

value = false / null / true / object / array / number / string

这些是JSON中允许的类型。

另一方面,Javascript对象确实可以具有作为函数的属性。由于人们经常混淆这两个单独的东西,我不确定你的意思,虽然你引用的是JSON,它是一种文本格式,不接受函数。

Javascript对象可以有这样的函数:

let obj = {
    somePropertyName: function() { console.log("hi")}
};

然后可以被称为:

 obj.somePropertyName();

ES6语法还允许一些其他方式来声明函数,但想法是一样的。最终在对象上指向一个指向函数的命名属性。使用带有ES6语法的箭头函数:

let obj = {
    somePropertyName: () => { console.log("hi")}
};

重要的是要意识到,当使用箭头函数时,调用该函数时this的值将不会设置为对象本身,因为根据定义,箭头函数使用{{{{{{ 1}}和this不是按照正常函数定义调用方法的方式设置的。