在JavaScript中将一个方法设置为公共方法。为什么要使用这种语法?

3

我正在研究TinyMCE代码时,发现了一种公开方法的实现方式:

tinymce.extend(this, {
    execCommand : execCommand,
    queryCommandState : queryCommandState,
    queryCommandValue : queryCommandValue,
    addCommands : addCommands
});

如果可以使用下面的代码(行数更少,执行时间更短),那么写上述代码的好处是什么?
this.execCommand = execCommand;
this.queryCommandState = queryCommandState;
this.queryCommandValue = queryCommandValue;
this.addCommands = addCommands;

甚至更简短,可以在对象声明的某处实现:
execCommand: execCommand,
queryCommandState: queryCommandState,
queryCommandValue: queryCommandValue,
addCommands: addCommands

有什么陷阱吗?

1个回答

2

嗯,有一件事情引起了我的注意,那就是你提供的第一个示例是TinyMCE期望其参数的方法,用于其extend函数。

浏览extend的源代码,它会检查每个键值对是否为undefined,只有在它们被定义时才将它们添加到对象中。因此,在扩展类时可以使用一些额外的功能。


正确的做法是,它期望一个对象列表与给定的对象进行扩展。这是他们发布私有方法的方式,但我的问题是为什么要以这种方式发布,而不是更简单的方式? - Andy
谢谢Demian,对我来说,这意味着如果方法名称中有拼写错误,将需要更多时间来识别错误。但我想,除非有类似复杂性的工作经验,否则很难与tinymce的创建者争论。 - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接