说我有这样的代码:
var opts = {hello: "it's me", imusthavetried: "a thousand times"}
function myFunction (options) {
}
myFunction(opts)
有没有办法让myFunction
只能写hello
而不是options.hello
?我知道我可以循环遍历每个选项对象子节点并重新定义它们,但有没有办法自动将options对象用作函数的范围?
答案 0 :(得分:3)
您可以使用with
块,但它的使用通常不受欢迎(如MDN documentation中所述)。过去它会导致性能问题,但现代版本的V8引擎(谷歌Chrome和Node.js使用的引擎)已经修复了这个问题。
function myFunction(options) {
with(options) {
console.log(hello);
}
}
myFunction({ hello: 'Hello, World!' });

答案 1 :(得分:1)
var opts = {hello: "it's me", imusthavetried: "a thousand times"}
function myFunction (options) {
with( options ) {
console.log( hello ); // "it's me"
}
}
myFunction(opts)
答案 2 :(得分:0)
另一种选择是绑定"这个"反对你的对象:
var opts = {hello: "it's me", imusthavetried: "a thousand times"}
function myFunction (options) {
console.log(this.hello)
}
myFunction = myFunction.bind(opts);
myFunction();