尝试通过从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();
在尝试实例化字典对象和尝试访问
时会出错来自elem方法的locale_rus()
方法
答案 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);