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

Javascript如何在另一个文件或Javascript中的块中创建字典的新对象,javascript,dictionary,Javascript,Dictionary,Um尝试从基本元素中访问dictionary对象,方法是从它创建一个新对象,并尝试从gridjs访问locale_rus()方法调用 如何在javascript中使用OOP实现这一点?嗯,对JS的工作来说是很新的 我将分享我的实现 var lkl = { 'apple': 'apple', 'papaw': 'papaw' }

Um尝试从基本元素中访问dictionary对象,方法是从它创建一个新对象,并尝试从gridjs访问locale_rus()方法调用

如何在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();
当尝试实例化dictionary对象和尝试访问

地点(u rus)

从elem方法中选择方法,尝试此方法

所以本质上,我们这里有一个对象lkl,出于某种原因,你想克隆它。有多种方法可以浅克隆对象。您可以使用jQuery.extend。我更喜欢ES6规范中的新特性

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

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

然后我们定义GridJS对象的原型,使用新操作符实例化一个对象,并调用elem和locale_rus方法,这两种方法都是有效的

var lkl={
‘苹果’:‘苹果’,
“爸爸”:“爸爸”
};
变量基本元素={
口述对象:object.assign({},lkl),
locale_rus:function(){
console.log('locale s');
console.log(这个.dictionary\u对象);
}
}
var GridJS=function(){
this.elem=函数(){
this.locale_rus();
}
}
GridJS.prototype=base_elem;
var gridjs=new gridjs();
gridjs.locale_rus();

gridjs.elem()执行此操作的传统方法是通过构造函数或在对象创建过程中分配原型

        //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);

您的代码在语法上不正确。至少
var base_elem={var dictionary\u object=new lkl();
Hi想知道那里出了什么问题吗?@zerkmsTry要运行它并查看许多语法错误有很多语法错误,运行它打开浏览器控制台,它会告诉你。你不能在对象上使用
new
关键字。所以
new lkl()
将引发异常。
lkl
是一个对象而不是一个方法。我强烈建议您查看
object.create()
用于构建您的对象。OP出于某种原因想克隆lkl,所以使用了它。好吧,现在它使用了。我的注释针对的是以前版本的代码,可能不正确。是的,我忘了添加{}早些时候。更正了。我希望人们能在回答中解释答案,而不是在十几条评论中。另外,当他们建议ES6用户可能还不能使用的东西时。@Anonymous0day控制台是为了调试而设计的,这就是它的目的。调试DOM会增加大量的开销,而不是简单地输出字符串en当你想序列化和对象时会发生什么?我不知道你的情况,但当我调试一个100元素数组的奇怪问题时,我非常感谢控制台,而不是在DOM中拖网式地搜索一个巨大的字符串。但这取决于你的平台。对于桌面浏览器,没有理由不使用控制台。