繁体   English   中英

调用Javascript函数并返回响应

[英]Call a Javascript function and return a response

我最近开始使用Javascript,但看到了这个问题,但没有任何解释。 我有以下Javascript代码:

var A = (function(){
  function Person(name){
    this.name = name;
  }

  var m = function(){
    return "Hello " + this.name;
  };

  Person.prototype.getGreeting = m;

  return Person;
})();

我必须写什么才能使其调用上面的代码并使它返回“ Hello World”? 我还在学习,请原谅我的无知。

此代码将Person对象定义为A ,并带有一个接受要在“ greeting”中打印的参数的构造函数。 因此,在此代码之后,您可以立即编写如下内容:

var somePerson = new A('world');
console.log(somePerson.getGreeting());

这将在名为somePerson的变量中创建A的实例(将Person包裹),并将在该实例上记录getGreeting()的输出。

使用更一致的间距和压痕,您可以更清楚地看到结构。 例子

  var A=(function(){ function Person(name){ this.name=name; } var m=function(){ return"Hello "+this.name; }; Person.prototype.getGreeting=m; return Person; })(); var B = new A(); B.name = "World"; console.log(B.getGreeting()); 

您可以从简单开始并构建完整的示例:

function Person(name){
  this.name = name;
}

var m = function(){
  return "Hello " + this.name;
};

Person.prototype.getGreeting = m;

var p = new Person('anybody');

console.log(p.getGreeting());

如果您来自另一种编程语言,那么入门的一本好书是Douglas Crockford撰写的“ JavaScript:The Good Parts”。 在那之后,David Herman撰写的“ Effective JavaScript”是一本不错的书。 与我们在此给出的任何答案相比,那些答案将更好地回答您有关代码示例的问题。

new A("World").getGreeting()

A的定义创建一个函数,然后立即调用它。 该函数创建另一个名为Person的函数。 此函数是JavaScript构造函数,可用于通过“ new Person”创建新对象。 Person构造函数接受名称参数并将其存储在内部。 还将Person函数的原型的getGreeting成员设置为打印“ Hello”和后跟Person名称的函数。

若要使用,请执行new A(“ World”)来调用构造函数A(实际上是Person),传入World,然后调用所得对象的getGreeting方法,该方法将调用原型的getGreeting函数。

您的代码使用一个称为立即调用函数表达式的惯用法,该惯用法将变量/函数Personm保留为私有/隐藏在该匿名函数的范围之内。 然后,您立即调用匿名函数,该函数设置Player类,然后返回它。 结果( Player构造函数本身)存储在A (JavaScript实际上没有类,但这是另一个讨论。)

要创建此类的实例,您可以执行以下操作:

var joe = new A("Joe");

然后,您可以使用joe对象( Person / A类的实例):

console.log(joe.getGreeting()); // Hello Joe

完整的工作示例:

 var A = (function(){ function Person(name){ this.name = name; } var m = function(){ return "Hello " + this.name; }; Person.prototype.getGreeting = m; return Person; })(); var joe = new A("Joe"); console.log(joe.getGreeting()); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM