我已经查看了一些教程,但我仍然在努力学习以下代码,有人可以解释一下这段代码。你能否解释一下每个部分是什么以及做什么。
function Person (name, age) {
this.name = name;
this.age = age;
}
var ageDifference = function(person1, person2) {
return person1.age - person2.age;
}
var alice = new Person("Alice", 30);
var billy = new Person("Billy", 25);
// get the difference in age between alice and billy using our function
var diff =
答案 0 :(得分:2)
function Person(name, age) { // define a _constructor_ called _Person_
this.name = name; // constructor sets instance property _name_
this.age = age; // constructor sets instance property _age_
} // when invoked with _new_, this creates an..
// ..Object which is an instance of Person
var ageDifference = function (person1, person2) { // a function (expression)
return person1.age - person2.age; // which returns the difference..
} // ..between _age_ properties
var alice = new Person("Alice", 30); // new instance of _Person_
var billy = new Person("Billy", 25); // another new instance
/* _alice_ now looks like | _billy_ now looks like
{ | {
age: 30, | age: 25,
name: "Alice" | name: "Billy"
} | }
*/
// get the difference in age between alice and billy using our function
var diff = ageDifference(alice, billy); // passing the instances from above..
// ..into the function expression
答案 1 :(得分:0)
javascript不是编写面向对象的最佳语言。基本上了解您所执行的操作:使用object
运算符创建新的new
。
What is the 'new' keyword in JavaScript?
所有这些。[变量] setter将存储在该对象中。因此,当您调用new Person
时,函数中的所有this
赋值都将存储为对象,因此此对象(类似于地图)将具有键name
和{{1} }使用指定的值。
所以alice将是age
,而billy将是{ name : "Alice", age : 30 }
因为javascript没有输入检查你可以简单地执行:{ name : "Billy", age : 25 }
它仍然有效。这就是为什么javascript不是最好的面向对象语言。
(您可以使用typeScript编写面向javascript对象:http://www.typescriptlang.org/)
答案 2 :(得分:0)
此代码在顶部显示了一个contsructor,用于通过提供参数Person
和name
来创建age
个对象。可以为此对象提供更多属性,例如头发颜色,高度,重量等等。通过使用这些对象,您可以简单地将所有对象存储在数组或列表中,这将提供可用于人口普查局跟踪人员的伪数据库。面向对象的编程就是创建存储数据的对象,而不是主要依赖于变量之前每个人姓名的变量。
例如,而不是:
var ericName = 'Eric';
var ericAge = '22';
你可以这样做:
var eric = new Person('Eric', '22');
这将创建存储在变量eric
中的Person对象。他的年龄可以通过拨打eric.name
和eric.age
来访问。面向对象的编程简化了如此多的变量,只有少数变量,并且有很多方法可以访问它们的信息并进行更改。
下一部分:
var ageDifference = function(person1, person2) {
return person1.age - person2.age;
}
实际上应该改写为:
function getAgeDifference(person1, person2) {
return person1.age - person2.age;
}
要获得两个人之间的年龄差异,请拨打getAgeDifference(alice, billy);
。这会调用getAgeDifference
方法,该方法将使用其age
属性为您提供更多信息。
面向对象的语言,如Java,C ++,Objective-C,也使用有助于将相关代码的各个部分分成不同类或文件的类。这个课程的想法很有帮助,但很难理解,如果你想学习很多东西我会建议你拿一本关于特定语言的书,并提供它提供的信息,让你知道如何写面向对象的代码以及一些示例和指南,说明每一步的操作。
祝你好运!