我最近开始使用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”?我仍然在学习如此宽恕我的无知。
答案 0 :(得分:1)
此代码将Person
对象定义为A
,其构造函数接受要在" greeting"中打印的参数。所以在这段代码之后你可以写下类似的东西:
var somePerson = new A('world');
console.log(somePerson.getGreeting());
这将在名为A
的变量中创建Person
(包装somePerson
)的实例,并在该实例上记录getGreeting()
的输出。
通过更加一致的间距和压痕,您可以更清楚地看到结构。 Example
答案 1 :(得分:1)
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());

答案 2 :(得分:1)
您可以从简单开始并构建完整示例:
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)读到了“有效的JavaScript”。这些将比我们在此处的任何答案更好地回答您关于代码示例的问题。
答案 3 :(得分:0)
new A("World").getGreeting()
A的定义创建一个函数,然后立即调用它。该函数创建另一个名为Person的函数。此函数是一个JavaScript构造函数,可用于通过" new Person"创建一个新对象。 Person构造函数接受name参数并在内部存储它。它还将Person函数原型的getGreeting成员设置为打印" Hello"然后是人的名字。
要使用,请执行新的A(" World")来调用构造函数A(实际上是Person),传入World,然后调用生成的对象的getGreeting方法,这将调用getGreeting原型的功能。
答案 4 :(得分:0)
您的代码使用称为Immediately-Invoked Function Expression的惯用法,它将变量/函数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());