Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript对象中编写方法的这两种方法有什么区别?_Javascript_Object_Methods - Fatal编程技术网

在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

键/值对中声明的方法和JavaScript对象中声明的方法之间有什么区别?在这两种情况下,
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)
    }
}