在javascript中使用对象的函数

时间:2017-05-28 13:25:59

标签: javascript

我在代码学院学习Javascript。我找到了这段代码:

// Our person constructor
function Person (name, age) {
    this.name = name;
    this.age = age;
}

// We can make a function which takes persons as arguments
// This one computes the difference in ages between two people
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 = ageDifference(alice,billy);

它起作用并返回差异。但是我想知道为什么在ageDifference中输入Person.alice和Person.billy会返回错误。是不是将年龄存储为Person.billy.age和Person.alice.age?

3 个答案:

答案 0 :(得分:2)

简短的回答,没有。 Person是爱丽丝和比利的原型(类似但不同于类)。它定义了此类的新对象可以使用的方法和字段,并且不是所有Person对象的容器,如您所暗示的那样。

原型Person本身就是一个拥有自己的字段和方法的对象。 Person.alice暗示有一个"类字段"所有Person个对象都会分享 - 当然与你定义的新对象无关,而这些对象恰好存储在变量" alice"中。

底线,Person.alice/.billy都是undefinedundefined.age正在抛出错误。

答案 1 :(得分:0)

你可以想到这个功能

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

new一起使用时,作为模具。它不包含新对象,只需构建它。

答案 2 :(得分:0)

人只是架构如何创建对象它不像普通的编程语言。有人说Javascript是真正的OOP语言,因为每个类型都是对象,每个函数都是对象......没有类(模式如何创建一些对象),创建一些对象的shcema是对象而不是类...如果你想模拟一些oop concpet你必须玩原型..它有点奇怪但原型就像某些对象的扩展,像你一样说..这个对象将指向这个位置,并把所有代码都放在我的位置