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;
},