[英]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函数。
您的代码使用一个称为立即调用函数表达式的惯用法,该惯用法将变量/函数Person
和m
保留为私有/隐藏在该匿名函数的范围之内。 然后,您立即调用匿名函数,该函数设置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.