【问题标题】:Using Prototype of function constructor add new function使用函数构造函数的原型添加新函数
【发布时间】:2016-12-29 13:29:03
【问题描述】:

我想检查我的想法是否正确?

代码:

function Person(firstname, lastname) {
            this.firstname = firstname;
            this.lastname =  lastname;
        }

        Person.prototype.getFullName = function () {
            return this.firstname + ' ' + this.lastname;
        }

        var john = new Person('Melo','Tang');

我将下图中的代码称为“函数构造函数”。

function Person(firstname, lastname) {
                this.firstname = firstname;
                this.lastname =  lastname;
            }

当程序运行到这一行时

var john = new Person('Melo','Tang');

JS 将使用原型链在“函数构造函数”对象中添加 getFullName 函数并新建一个空对象,如下图所示,对吗?

【问题讨论】:

  • “原型链”标签应该在红色箭头上。
  • 我忘了谢谢,但除此之外还有什么错误吗?

标签: javascript


【解决方案1】:

我不太明白你的图表或箭头或它们的颜色应该代表什么。

当程序运行到这一行时

var john = new Person('Melo','Tang');

这里发生的事情正是通过Person 构造函数构造了一个新对象,Person.prototype 作为它的原型。除了用作新对象的原型之外,Person.prototype 没有被检查或咨询,此时也没有对其方法进行任何处理。只有在查找属性和方法时才会参考原型,例如调用john.getFullName()时。

为了清楚起见,我会避免使用“函数构造函数对象”一词。就叫它“构造函数(函数)”吧。

【讨论】:

  • torazaburo 谢谢。据我所知,原型是对象的属性,而原型是对象。我称“函数构造函数对象”是因为我想强调函数构造函数是 JS 中的对象。我想问一个问题,“Person.prototype”是函数构造函数的属性吗?如果是,在 Person.prototype 或 proto Obj 处添加了 getFullName 函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
  • 2017-11-10
相关资源
最近更新 更多