从外部调用函数内部的JavaScript变量

从外部调用函数内部的JavaScript变量,javascript,Javascript,我可以从外部访问变量innerVar吗?这是最基本的 var func = function(){ this.innerVar = 'hello'; } console.log(func.innerVar); // it prints undefined 创建一个对象新建func() 设置其属性innerVarthis.innerVar='hello' 获取其属性(new func())。innerVar 这是基本的 var func = function(){ this.inn

我可以从外部访问变量
innerVar
吗?

这是最基本的

var func = function(){
   this.innerVar = 'hello';
}

console.log(func.innerVar); // it prints undefined
  • 创建一个对象
    新建func()
  • 设置其属性innerVar
    this.innerVar='hello'
  • 获取其属性
    (new func())。innerVar
  • 这是基本的

    var func = function(){
       this.innerVar = 'hello';
    }
    
    console.log(func.innerVar); // it prints undefined
    
  • 创建一个对象
    新建func()
  • 设置其属性innerVar
    this.innerVar='hello'
  • 获取其属性
    (new func())。innerVar
  • 现在您有了这些选项:

    1) 使用
    func
    作为构造函数:

    var func = function(){
       this.innerVar = 'hello';
    }
    
    2) 在函数上使用
    应用
    方法:

    console.log(new func().innerVar);
    
    var obj = {};
    func.call(obj);
    console.log(obj.innerVar);
    
    3) 使用函数上的
    调用
    方法(欢迎@dev null):

    4) 在函数上使用
    bind
    方法:

    console.log(new func().innerVar);
    
    var obj = {};
    func.call(obj);
    console.log(obj.innerVar);
    
    5) 还有疯狂的东西:

    var obj = {};
    func.bind(obj)();
    console.log(obj.innerVar);
    
    现在您有了这些选项:

    1) 使用
    func
    作为构造函数:

    var func = function(){
       this.innerVar = 'hello';
    }
    
    2) 在函数上使用
    应用
    方法:

    console.log(new func().innerVar);
    
    var obj = {};
    func.call(obj);
    console.log(obj.innerVar);
    
    3) 使用函数上的
    调用
    方法(欢迎@dev null):

    4) 在函数上使用
    bind
    方法:

    console.log(new func().innerVar);
    
    var obj = {};
    func.call(obj);
    console.log(obj.innerVar);
    
    5) 还有疯狂的东西:

    var obj = {};
    func.bind(obj)();
    console.log(obj.innerVar);
    

    如果您使用
    new
    关键字创建一个新实例,您可以这样做,但您也应该有充分的理由实际需要一个实例,否则您最好在更高的范围内定义一个常规变量。这不是一个变量。它是分配给此
    的属性,在每次调用中可能会有所不同。如果要将某些数据与函数本身关联,应使用
    var func=function(){};func.innerVar='hello'这几乎肯定是一个问题。你到底想做什么让你这么问?部分是XY问题,部分是不想学习语言。如果你用
    new
    关键字创建一个新实例,你可以这样做,但你也应该有充分的理由实际需要一个实例,否则,您最好在更高的范围内定义一个正则变量。这不是一个变量。它是分配给此
    的属性,在每次调用中可能会有所不同。如果要将某些数据与函数本身关联,应使用
    var func=function(){};func.innerVar='hello'这几乎肯定是一个问题。你到底想做什么让你这么问?部分是XY问题,部分是不想学习语言。@dev null哈哈,是的更好:)或
    var obj=new func()
    应用(obj):还有什么建议吗汉克斯兄弟。。。真的吗helped@dev-空哈哈,是的更好:)或
    var obj=new func()
    应用(obj):还有什么建议吗汉克斯兄弟。。。这真的很有帮助