在Javascript对象中编写方法的这两种方法有什么区别?
键/值对中声明的方法和JavaScript对象中声明的方法之间有什么区别?在这两种情况下,在Javascript对象中编写方法的这两种方法有什么区别?,javascript,object,methods,Javascript,Object,Methods,键/值对中声明的方法和JavaScript对象中声明的方法之间有什么区别?在这两种情况下,this关键字都有效 let dog = { sound: "roof", talk: function(){ //<----------Key/Value console.log(this.sound) } } let dog = { sound: "roof", function talk(){ //<----------Decl
this
关键字都有效
let dog = {
sound: "roof",
talk: function(){ //<----------Key/Value
console.log(this.sound)
}
}
let dog = {
sound: "roof",
function talk(){ //<----------Declarative method
console.log(this.sound)
}
}
let dog={
声音:“屋顶”,
talk:function(){/除非转换,否则没有区别
talk: function(){ //<----------Key/Value
console.log(this.sound)
}
Arrow函数使用词法此
,这意味着它使用在本例中定义对象的上下文窗口
函数
使用对象的上下文在第一种情况下,您可以在任何类中使用该函数,这将指向该类
而在第二个对象中,它将访问其对象变量sound,我可以说ES6中没有太大的区别,他们引入了这个功能,这是键值对的缩写,请参见下面的示例 在ES 5中
var obj = {
talk: function(){ }
}
obj.talk() //This how u call
在ES 6中
var obj = {
talk(){ } // here there is no need to have property name it will take it talk by default in ES6
}
obj.talk() //This how u call
在这个上下文中没有区别
如果您想通过下面的示例了解更多关于ES6功能的信息,可以使用不同的方法定义对象中的方法:
let dog={
声音:“屋顶”,
谈话{
console.log('first way')
},
谈话2:功能(){
console.log('secondway')
},
谈话3:()=>{
console.log('third way')
},
//函数talk4(){}//这不是正确的方法
}
dog.talk();//第一条路
dog.talk2();//第二种方式
dog.talk3();//第三种方式
上面的代码块用作对象,它包含一些属性和方法
您可以编写如下代码:
var dog=(函数(){
功能狗(){
this.sound='roof'//类变量
}
dog.prototype.talk=函数(){
console.log(this.sound);//方法
};
返回犬;
}());
var obj=新狗();
obj.talk()
区别在于ECMAScript 2015
区别在于第二个不是有效的代码。Uncaught SyntaxError:意外标识符
true-第二个不需要函数
关键字
我不认为这是有效的syntax@JasperBernales请勾选此处删除ES6中的函数
关键字该问题与=>
符号无关
var obj = {
talk(){ } // here there is no need to have property name it will take it talk by default in ES6
}
obj.talk() //This how u call
let dog = {
sound: "roof", // Property
talk: function(){ // methods
console.log(this.sound)
}
}