Javascript对象原型(prototype)函数

标签 javascript function prototype

我在一个对象中有三个方法。

其中两个工作正常,当打印第三个时 - 它打印出代码本身,而不是函数。这是代码及其在控制台中的外观:

function Students(name, lastname, grades){
    this.name = name;
    this.lastname = lastname;
    this.grades = grades;
    this.addGrade = function(a){
        this.grades.push(a);
    }
    this.printData = function(){
        console.log("Name: " + this.name);
        console.log("Grades: " + this.grades);
        console.log("Average: " + this.gradeAvg);
    }
    this.gradeAvg = function(){
        console.log("blabla");
    }
}

var StudentasA = new Students("Petras", "Petrauskas", [8, 9, 9, 8, 7]);
var StudentasB = new Students("Jurgis", "Jurgauskas", [6, 7, 5, 4, 9]);
StudentasA.printData();
StudentasA.addGrade(28);
StudentasA.printData();

控制台:

console view

最佳答案

您需要调用该函数

this.gradeAvg()
//           ^^

function Students(name, lastname, grades){
    this.name = name;
    this.lastname = lastname;
    this.grades = grades;
    this.addGrade = function(a){
        this.grades.push(a);
    }
    this.printData = function(){
        console.log("Name: " + this.name);
        console.log("Grades: " + this.grades);
        console.log("Average: " + this.gradeAvg());
        //                                     ^^
    }
    this.gradeAvg = function(){
        return this.grades.reduce(function (a, b) { return a + b; }) / this.grades.length;
    }
}

var StudentasA = new Students("Petras", "Petrauskas", [8, 9, 9, 8, 7]);
var StudentasB = new Students("Jurgis", "Jurgauskas", [6, 7, 5, 4, 9]);
StudentasA.printData();
StudentasA.addGrade(28);
StudentasA.printData();

关于Javascript对象原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41130930/

相关文章:

javascript - 为什么在 JavaScript 对象中使用公共(public)方法?

javascript - jquery on 方法上的多个函数

javascript - 什么是服务器端 java 脚本?我们也可以在服务器端使用 java 脚本吗?前端开发人员需要了解哪种类型的 java 脚本?

Javascript对象函数参数性能

python - def anti_vowel - Codecademy (python)

c - C 中的上层函数

javascript - JavaScript 中的继承 : child object still calling its parent method

javascript - 如何取消选择单选按钮并在单击时重新选择默认按钮?

javascript - document.getElementById 不适用于 Firefox

javascript - 这个例子代表 "Prototypal Inheritance"吗?