Javascript如何创建在另一个文件或Javascript中的块中创建的字典的新对象

时间:2015-10-13 08:16:06

标签: javascript dictionary

尝试通过从base_elem创建一个新对象并尝试从gridjs访问locale_rus()方法调用来尝试访问base_elem中的字典对象

如何在javascript中使用OOP完成此操作?这对JS工作来说很新鲜 我会分享我的实施

                var lkl = {
                        'apple': 'apple',
                        'papaw': 'papaw'    
                }

                var base_elem = {
                    var dicttionary_object = new lkl();
                    console.log(lkl);
                    locale_rus: function(){
                        console.log('locale s');
                    }
                }

                var gridjs = {

                    elem: function(){
                        locale_rus();
                        console.log('Hello World!')
                    }
                }


                gridjs.__proto__ = base_elem
                gridjs.locale_rus();

在尝试实例化字典对象和尝试访问

时会出错
  

locale_rus()

来自elem方法的

方法

2 个答案:

答案 0 :(得分:1)

试试这个。

基本上,我们在这里有对象lkl,由于某种原因你想要克隆。浅层克隆对象有多种方法。您可以使用jQuery.extend。我更喜欢Object.assign这是ES6规范的新功能。

下一步是创建我们的base_elem对象,该对象将用作GridJS函数的原型。我们将在基础对象中描述locale_rus函数,该函数将由GridJS函数的所有实例继承。

我们现在定义GridJS函数,该函数包含从原型调用locale_rus方法的方法。

然后我们定义GridJS对象的原型,使用new运算符实例化一个对象,并调用同时具有功能的elem和locale_rus方法。

var lkl = {
  'apple': 'apple',
  'papaw': 'papaw'    
};

var base_elem = {
  dicttionary_object :Object.assign({},lkl),
  
  locale_rus: function(){
    console.log('locale s');
    console.log(this.dicttionary_object);
  }
}


var GridJS = function(){

  this.elem = function(){
    this.locale_rus();

  }
}

GridJS.prototype = base_elem;

var gridjs = new GridJS();
gridjs.locale_rus();
gridjs.elem();

答案 1 :(得分:0)

传统的做法是通过构造函数或在对象创建过程中分配原型。

        //Two discreet objects
        var lkl = {
                'apple': 'apple',
                'papaw': 'papaw'    
        }

        var base_elem = {
            dicttionary_object: {},    

            locale_rus: function(){
               alert("test");
            }
        }    


        //Create a new one based on another
        var gridjs = Object.create(base_elem);


        //Create another object as a property of another object 
        gridjs.dicttionary_object = Object.create(lkl);


        //Now test them
        gridjs.locale_rus();
        alert(gridjs.dicttionary_object);