Javascript 为什么用ES5表示的set关键字和函数的setter抛出语法错误?

Javascript 为什么用ES5表示的set关键字和函数的setter抛出语法错误?,javascript,getter-setter,Javascript,Getter Setter,为什么定义一个setter会在函数以ES5方式表示时抛出语法错误,而在ES6中表示时却有效 具有ES5语法的Setter(不工作) 具有ES6语法的Setter(有效) 谢谢您没有在对象中正确定义方法请阅读此-->也请阅读此 var-person={ 名字:“约翰”, 姓:“Doe”, 语文:“, 设置语言(val){ this.language=val }, 获取getLanguage(){ 返回此.language } } person.setLanguage='EN' conso

为什么定义一个
setter
会在函数以ES5方式表示时抛出语法错误,而在ES6中表示时却有效

具有ES5语法的Setter(不工作)

具有ES6语法的Setter(有效)


谢谢

您没有在对象中正确定义方法请阅读此-->也请阅读此
var-person={
名字:“约翰”,
姓:“Doe”,
语文:“,
设置语言(val){
this.language=val
},
获取getLanguage(){
返回此.language
}     
}
person.setLanguage='EN'

console.log(person.getLanguage)
您的第二个示例不是特定于ES6的,它是有效的ES5语法:

set setLanguage(val) {
    this.language = val;    
},

物业签署:
 PropertyName:AssignmentExpression
getPropertyName(){FunctionBody}
setPropertyName(PropertySetParameterList){FunctionBody}

如您所见,在PropertyName之后有一个
,但在getter或setter中没有
函数

更新:

您可能混淆了计算属性名和getter/setter的概念

ES6计算属性名,因此您可以这样做(此代码段可能在旧浏览器(如IE)中不起作用):

const person={
语文:“,
设置语言(val){
this.language=val;
},
getLanguage(){
返回此.language;
}
}
个人语言(“EN”);
console.log(“person.language”,person.language);

console.log(“person.getLanguage()”,person.getLanguage())
在第一个代码示例中不应该是
setLanguage(val){this.language=val}
?我没有把它标为复制品,但它真的很接近;)@CodeManiac似乎认为OP认为这种语法是ES6,为什么还要使用这种命名约定呢?有
lang:'',get language(){return this.lang;},set language(val){this.lang=val;}
,不是更自然吗?然后你的代码就可以做
person.language='en'
var lang=person.language。。。
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "",
  set setLanguage(val) {
     this.language = val    
  },
  get getLanguage() {
     return this.language   
  }     
}

person.setLanguage = 'EN'
person.getLanguage

set setLanguage(val) {
    this.language = val;    
},