with()语句中的函数不接收定义的对象

时间:2011-12-06 15:46:48

标签: javascript function

当我在with()语句中定义并调用Function时,该函数不会接收with()中定义的对象。有办法解决我的问题吗?

例如,此代码不起作用:

var testObj = { testStr: "Hello World!" };
with(testObj) {
  function testFunc(){
     alert(testStr);
  }
  testFunc();
}

4 个答案:

答案 0 :(得分:2)

这是一个功能声明。

首先不应在语句块中声明函数。

表达式将起作用:

var testObj = { testStr: "Hello World!" };
with(testObj) {
  var testFunc  = function(){
     alert(testStr);
  }
  testFunc();
}

答案 1 :(得分:1)

只需使用函数表达式:

var testObj = { testStr: "Hello World!" };
with(testObj) {
  var testFunc = function(){
     alert(testStr);
  };
  testFunc();
}

函数声明被提升,因此不起作用。

答案 2 :(得分:0)

看起来它指的是testFunc(),而不是testObj。

var testObj = { testStr: "Hello World!" };
with(testObj) {
    function testFunc(){
        alert(this == testObj);
    }
    testFunc();
}

答案 3 :(得分:0)

只是不要使用with (1)

var testObj = { testStr: "Hello World!" };
(function() {
  alert(testObj.testStr);
}())