首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript面向对象编程

Javascript面向对象编程
EN

Stack Overflow用户
提问于 2013-10-11 15:00:43
回答 3查看 73关注 0票数 0

我在JS中找到了一个模块模式:

代码语言:javascript
复制
<script>
var MODULENAME = (function(my, $) {
    my.publicVar = "5";
    my.publicFn = function() {};
    return my;
}(MODULENAME || {}, jQuery));
</script>

但是,我不能执行实例化。模块模式允许这样做吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-11 15:20:37

模块对象可以包含任何内容。也许您希望在其中包含一个构造函数:

代码语言:javascript
复制
var MODULENAME = (function(my, $) {

    var privateVar = 10;
    my.SomeConstructor = function() {
        this.publicVar = 5;
    }
    my.SomeConstructor.prototype.someMethod = function() {};
    my.SomeConstructor.prototype.getPrivate = function() { return 10; };

    return my;
}(MODULENAME || {}, jQuery));

var instance = new MODULENAME.SomeConstructor();
instance.publicVar;    // 5
instance.privateVar;   // undefined
instance.getPrivate(); // 10
票数 1
EN

Stack Overflow用户

发布于 2013-10-11 15:03:19

Instantiantion基本上意味着您将使用函数运行new

所以也许你在找这个?

代码语言:javascript
复制
var Some = function (param) {
  var somePrivateVar = 'private';
  this.somePublicVar = 'public';

  this.method = function () {
    return param;
  };
};

var some = new Some('abla');
console.log(some.method());
// some.somePrivateVar === undefined
// some.somePublicVar === 'public'

在您的示例中,MODULENAME是一个带有publicVarpublicFn的对象(对象,而不是函数)。它并不意味着要以不调用new jQuery()的方式实例化。

票数 3
EN

Stack Overflow用户

发布于 2013-10-11 15:07:33

您也可以使用prototype继承来完成此任务:

代码语言:javascript
复制
var MyClass = function(name)
{
//sharing name within the whole class
this.name = name;
}

MyClass.prototype.getName = function(){
return this.name;//now name is visible to getName method too
}

MyClass.StaticMethod = function()
{
console.log("Im Static");

// and since is not in prototype chain, this.name is not visible
}

    var myclass = new MyClass("Carlos");
    console.log(myclass.getName())//print "Carlos"
MyClass.StaticMethod()// print "Im Static"
myclass.StaticMethod() // error

全硒这篇文章

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19321337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档