javascript - 没有定义类的对象实例

标签 javascript oop object

我使用以下方法来定义对象实例而不定义类:

var obj = new function () {
  this.x = 25;                // Public variable
  var y = 10;                 // Private variable

  this.print = function () {  // Public function
    alert( this.x + y );    
  }
}

obj.print();

与其他模块模式相比,这有什么缺点吗? (对于 JSLint 来说 odd construct at line 1 )

最佳答案

如果您只需要聚合范围,请使用自执行匿名函数:

var obj = (function () {
  var y = 10;                 // Private variable

  return {
    x: 25,                    // Public variable

    print: function () {      // Public function
      alert( this.x + y );    
    }
  }
})();

obj.print();

自执行匿名函数和创建匿名类实例之间的区别仅在于意识形态。 SEAF 是一次性的,而 class 是多次使用的。顺便说一句,实际上两次都发生了同样的事情。当您对函数调用 new 时,它会返回一个具有 this 属性的新对象,这与我们在 SEAF 中看到的相同。

关于javascript - 没有定义类的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043005/

相关文章:

javascript - 将自定义方法与自定义对象一起使用

javascript - Flot 不适用于 node.js

javascript - 如何以两个不同的 Angular 在两个方向上旋转图像?

javascript - 使用 Workbox 预缓存 Firebase JS 文件 - 被 CORS 阻止

language-agnostic - DoSomethingToThing(Thing n) vs Thing.DoSomething()

iphone - Objective-C : call super class

javascript - 在 Google Maps API v3 中获取更新的半径/区域

c# - 内部类的成员可以被覆盖吗?

object - 加权 RDF 谓词(owl :ObjectProperty)

javascript - 如何动态设置 Javascript 对象值?