JavaScript 类创建

标签 javascript javascript-framework

我目前使用这种风格来创建一个类似于 js 类的结构:

   var JSClass  =   (function(){
       console.log('JSClass Init');
       //-- Set up private var and fnc here
       var opt  =   {
              width:    0,
           height:  60
           }

       function _PrivateSum(g){
           return (g * opt.width);
       }

       //-- Set up public access here
       function JSClass(){ //the class constructor
           //-- class attributes

       }
           //-- class methods
       JSClass.prototype    =   {
           getWidth : function(){
               return _PrivateSum(opt.width);
           },
           setWidth : function(w){
               console.log('JSClass setWidth: ' + w);
               opt.width    =   w;
           },
           getHeight : function(){
               console.log('JSClass getHeight');
               return opt.height;
           },
           setHeight : function(h){
               opt.height = h;
           }

           };

           return JSClass;

   }());

通过在另一个页面中调用以下代码来初始化:

   var jc   =   new JSClass();

这一切都很好,但如果我需要创建一个我想在同一页面上使用多次的类: var jc = new JSClass(); var jc2 = new JSClass();

目前,如果我更改第一个“jc”中的任何内容,那么它也会控制第二个“jc2”中的内容。

所以我的问题是我将如何创建 JSClass() 类的新实例,以便我可以单独操作每个实例而不影响当前实例,类似于 php 类等

我相信我需要以某种方式创建原始版本的克隆,但不确定,或者如果有比上面更好的方法,请随时通知我

非常感谢

最佳答案

我喜欢使用这样的结构: 注意:没有新语句。

//definition
var myClass = function() {
    var abc = 1; //private properties

    function f1() {...}; //private methods

    return {
        bar: function() {} //public function *with* access to private members and functions
    };
};

//usage:

var myInstance1 = myClass();
var myInstance2 = myClass();

关于JavaScript 类创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410881/

相关文章:

javascript - 覆盖 native Javascript 函数

javascript - Google 身份验证 token 返回不包含 refresh_token

backbone.js 和/或 knockout.js 中的 AngularJS 示例

javascript - jQuery preventDefault() 没有像我预期的那样工作——这是一个 jQuery 错误吗?

javascript - Backbone 中的计算属性

javascript - 从 contenteditable div 获取值(value)

javascript - DIV 在扩展时自行重新排序 - 我如何保持相同的顺序?

javascript - 添加到照片 slider 的链接

javascript - Django 和 Mustache 使用相同的模板语法

javascript - 如何获取一组 Raphael 对象的 BBox 宽度和高度?