Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从子对象访问JavaScript对象中的根属性_Javascript - Fatal编程技术网

从子对象访问JavaScript对象中的根属性

从子对象访问JavaScript对象中的根属性,javascript,Javascript,我有一个JavaScript块,其中值得注意的是,this.id解析为未定义 控制台指示这将解析为methods对象。我原本以为它会解决这个问题。我的问题是,在我的buy方法中,如何访问id属性。请注意,我不想将buy移出methods对象。我正在努力理解这一点 常数项={ id:5, 方法:{ 买{ 提醒“购买物品”+此.id; console.logthis; } } }; constMyButton=document.getElementById'myButton'; myButton.

我有一个JavaScript块,其中值得注意的是,this.id解析为未定义

控制台指示这将解析为methods对象。我原本以为它会解决这个问题。我的问题是,在我的buy方法中,如何访问id属性。请注意,我不想将buy移出methods对象。我正在努力理解这一点

常数项={ id:5, 方法:{ 买{ 提醒“购买物品”+此.id; console.logthis; } } }; constMyButton=document.getElementById'myButton'; myButton.addEventListener'click',=>{ item.methods.buy; }; 购买 您可以使用as item.methods.buy.callitem;将项绑定到此

在下面试试

常数项={ id:5, 方法:{ 买{ 提醒“购买物品”+此.id; console.logthis; } } }; constMyButton=document.getElementById'myButton'; myButton.addEventListener'click',=>{ item.methods.buy.callitem; }; 购买
我不想将buy移出methods对象。嗯,这就是你的问题…item.methods.buy.bindItem如果你有很多东西看起来像是在做购物车什么的呢?你打算把methods参数添加到所有的方法中吗?@Dilshan你是对的。也许我对这个问题的看法太面向对象了。我的想法是将类型分组,以帮助保持事物的有序性。这个项目实际上只是我为这个例子选择的一个容器。但是,想象一个我想分享的主对象。该对象将包含部门、产品、客户。这就是为什么我有一个属性和方法,因为我试图有一个类似名称空间的东西。@Dev如果你想使用OOP,那么试试es6类。上面的代码非常糟糕。JavaScript中的这种行为与Java等其他语言中的行为不同。如果您不想使用es6,那么您可以使用带有babel编译器的Webpack将您的es6代码转换为es5代码。如果您还需要类型定义,也可以尝试使用typescript,