如何访问函数的属性?

时间:2016-02-13 13:23:14

标签: javascript function object

我刚刚开始学习Javascript并正在尝试使用函数。我写下以下认为它会起作用。这样的事情是可能的还是只是错误

function foo() {
   console.log(this.language);
}

foo.language = "English";

foo();

4 个答案:

答案 0 :(得分:2)

这是不可能的,因为要获得this作为当前对象的访问权限,您需要实例化(构造函数)函数,这是调用new将为您执行的操作。访问this以获取对当前实例的引用不仅仅是Javascript中的情况;在Java中,this也无法从静态上下文访问。

您正在寻找的是:

function Foo(language) {
   this.language = language; 

}
Foo.prototype.log = function(){
   console.log(this.language); 
}    
var bar = new Foo("English"); 
bar.log(); 

答案 1 :(得分:1)

您可以使用new关键字创建 foo 对象( foo 的实例)。然后设置该实例的语言属性。如果 foo 具有输出其语言属性的函数,则可以在实例上调用该函数以查看其语言

function foo() {
    this.outputLanguage = function() {
        console.log(this.language);
    }
}

var f1 = new foo();
f1.language = "English";

var f2 = new foo();
f2.language = "French";

f1.outputLanguage();
f2.outputLanguage();

在这个例子中,我们制作2个foo对象,并为每个对象分配不同的语言。

foo()函数是constructor function。我们通常将实例变量的初始值传递给它,如下所示:

function foo(language) {
    this.language = language;
    this.outputLanguage = function() {
        console.log(this.language);
    }
}

var f1 = new foo("English");
var f2 = new foo("French");

f1.outputLanguage();
f2.outputLanguage();

答案 2 :(得分:1)

Javascript仅支持原型继承。因此,要将属性(在您的情况下language是属性)分配给Object(在您的情况下为foo),您需要使用构造函数。按照惯例,构造函数是用Initcap编写的。

function Foo(lang){
 this.language = lang;
}

Foo.prototype.getLanguage = function(){
  return this.language;
}

var lang1 = new Foo('english');
var lang2 = new Foo('bengali');

console.log(lang1.getLanguage()); // english
console.log(lang2.getLanguage()); // bengali

答案 3 :(得分:0)

this可用于实例变量,在您的情况下,名为函数

function foo() {
   console.log(foo.language); //instead of this, use function property
}

foo.language = "English";

foo();

如果您想要更多潜水,请查看我的其他answer了解同一主题