gpt4 book ai didi

javascript - 关闭对象创建 : What are the advantages/disadvantages of these two approaches?

转载 作者:行者123 更新时间:2023-11-30 18:42:20 26 4
gpt4 key购买 nike

我见过这两种创建带有闭包的 js 对象的方法,但不确定使用一种方法是否比另一种方法有任何优势:

1.) 使用新的

var myObject = new function() {

// ...

this.foo = 'bar';
};

2.) 使用自执行匿名

var myObject = (function() {

// ...

return {
foo: 'bar'
};
} ());

我读过一些关于方法 1 需要分配 this 的一些开销,但我不确定该声明是与方法 2 之类的东西进行比较,还是与非返回自执行匿名函数。

我个人认为第一种语法看起来更易于维护,但这可能只是个人偏好。

最佳答案

第一个语句提供了一个完整的 Object 实例——尽管是唯一可能的实例,因为构造函数可以使用一次——第二个语句提供了一个对象文字。在这种情况下,我看不出有什么区别,两者都可以称为“一次实例模式”。第一个模式(对我而言)的唯一优势是我的编辑器(KomodoEdit 6.1)可以为其使用智能感知(它识别 myObject 并“知道”它的属性)。也许第一种模式的另一个优点是可以为其定义原型(prototype)方法(如果您命名匿名函数):

var myObject = new function myObj() {
this.foo = 'bar';
myObj.prototype.getFoo = function() { return this.foo; }
myObj.prototype.setFoo = function(v){ this.foo = v || this.foo; return this; }
};

但这可能不适用于所有浏览器。

关于javascript - 关闭对象创建 : What are the advantages/disadvantages of these two approaches?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com