【发布时间】:2020-09-10 05:35:36
【问题描述】:
我想学习在对象中提升方法的正确方法。 我的目标是将对象定义放在代码末尾,将对象用法放在开头。比方说:
doing stuff with o
let o = {
bar: 1,
foo: function() {
console.log(this.bar);
},
}
当然,如果我在写:
o.foo();
let o = {
bar: 1,
foo: function() {
console.log(this.bar);
},
}
o 未定义,因为对象是在使用后声明的。
我想到了这个技巧:
o = returnO();
o.foo();
function returnO() {
return o = {
bar: 1,
foo: function() {
console.log(this.bar);
},
}
}
这可行,但我想知道是否没有更好的方法来避免该声明
o = returnO();
谢谢。
【问题讨论】:
-
为什么要实现这个目标?你也在谈论提升功能,但
o实际上不是一个功能 -
为什么要在定义之前使用它?是什么让您认为这是个好主意?
-
@Ashish singh:目的不是o对象,而是o内部的foo方法的使用。当你在对象内部声明方法时,据我所知,你不能用函数声明来声明它,它必须是一个函数表达式。 @ Utkanos:对我来说,在代码开头使用对象似乎更容易(例如,如果您有一个管理 ajax 请求的对象和一些将其分配给页面的某些元素的语句)。但这只是vue点的问题,我的第一个目的是想办法用函数声明来定义对象方法
标签: javascript object methods hoisting