这两种方法在javascript类中定义方法的区别
difference between those 2 way to define a method in a javascript class
我有以下类:
var myclass = (function(){
var b={};
b.method1 = function(){
console.log("method1");
};
b.method2 = function class2(){
console.log("method2");
};
return b;
}());
除了method1
是分配给方法1的匿名函数和method2
是命名函数之外,这些方法之间有什么区别吗?
我通常使用方法1的方式,但只发现方法2用于方法声明。
使用一个比另一个有什么好处吗?
对于命名函数表达式(method2),您可以通过其名称调用函数本身。
b.method2 = function class2(){
console.log("method2");
if (somecondition){
var something = new class2();
}
};
功能上这几乎是一样的。在某些浏览器上,如果您调用console.log( b.method1, b.method2 )
,您可以看到差异,因为第二个浏览器有名称。这里有很多关于这个主题的文章。这就是其中之一:在JavaScript中,函数表达式和声明之间有什么区别?
JavaScipt中的函数名基本上是一个变量,因此您可以重用它。这意味着您可以在自执行函数中使用class2
,而无需调用b.method2
。由于自执行函数返回b
对象,因此不能在外部使用class2
。
相关文章:
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 用于检查数组中是否存在元素的javascript自定义方法
- Meteor-添加用户自定义字段的方法不起作用
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- 在angularjs中创建自定义控件的推荐方法
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- React路由器错误-'无法调用方法'getRouteAtDepth'的未定义'
- 去掉多余的方法定义
- Javascript方法定义失败
- 属性定义是使用敲除时的方法定义
- Javascript:使用eclipse跳转到方法定义
- 使用以下两种方法定义的方法之间的差异
- 为什么函数属性定义在对象本身上(例如Function.name),而方法定义在Function.prototype上?
- ES6箭头函数和方法定义的区别
- 如果没有“函数”,这个对象方法定义如何工作?关键字
- 使用DOM方法定义文本框的动态宽度
- Javascript方法定义不一致
- 为什么实例方法定义在原型中,而实例字段定义在构造函数中?
- Reactjs最好的策略是为渲染方法定义一个变量
- 在JavaScript中:类中函数和方法定义之间的语法差异