<script type="text/javascript">
var Person =
{
Create: function(name, age) {
this.name = name;
this.age = age;
},
showMe: function() {
return " Person Name: " + this.name + " Age: " + this.age + " ";
}
};
function New(aClass, aParams) {
function new_() {
aClass.Create.apply(this, aParams);
};
new_.prototype = aClass;
var obj = new new_();
return obj;
}
</script>
我不太明白上面的代码。有人能告诉我Person,Create,showMe,New和new_的含义吗?非常感谢。
答案 0 :(得分:2)
Person
是一个包含两个函数的对象 - Create
和showMe
。在JavaScript中,没有类,只有对象,这就是你编写对象的方式 - 使用'Object Literal Notation'(用逗号分隔的花括号和函数/属性)。
New
是对new
关键字的巧妙重新实施。 javascript没有类,而是有原型,而不是创建类的实例,而是创建原型的副本。在这种情况下,如果您将Person
传递给New()
,它将用作new_.prototype = aClass
中的原型,此函数的其余部分将返回带有Person
原型的对象,这意味着稍后对Person
的任何更改也会继承到obj
(除非obj
已覆盖它们)。
答案 1 :(得分:0)
`Person` -- a variable w/ 'parts' (used loosely) `Person.Create` and `Person.showMe'
`Person.Create` -- function of `Person` that sets `Person.name` and `Person.age` to its arguments
`Person.showMe` -- returns a string explaining values of `Person.name` and `Person.age`
`New` -- a function intended to instantiate new Person's thru prototypal (this is NOT class based) inheritenced
`New._new` -- `New` uses this to get it done
基本上通过原型继承,即使Person
仅被“制造”一次,其他“版本”也可以实物构建。它可以像这样使用(在这里试试:http://jsfiddle.net/PBhCs/)
var Person = {
Create: function(name, age)
{
this.name = name;
this.age = age
},
showMe: function()
{
return " Person Name: " + this.name + " Age: " + this.age + " ";
}
};
function New(aClass, aParams)
{
function new_()
{
aClass.Create.apply(this, aParams);
};
new_.prototype = aClass;
var obj = new new_();
return obj;
}
var a = New(Person, ['moo', 5]);
var b = New(Person, ['arf', 10]);
alert(a.showMe() + b.showMe());