原型和类/构造函数/对象成员



我对JavaScript中的原型链和继承感到非常困惑。例如,Date(( 对象具有成员方法/函数,例如 Date.now() 。那么,为什么当你创建 Date(( 对象的新实例并调用 now(( 方法时,它会抛出错误? new Date.now()但是当调用原型方法(如 getTime (时,caling new Date().getTime() 有效,但不创建新实例Date().getTime()。为什么?我有一个理解,物体的原型成为原始物体的一部分?例如:

function Person(firstName, lastName) {
     this.firstname = firstName;
     this.lastname = lastName;
     this.getfirstName = () => {
              return this.firstName;
     }
}
Person.prototype.getlastName = () => {
      return this.lastName;
}

原型方法getlastName成为Person的成员方法,并且可以在不使用 new 关键字的情况下访问,就像它必须与 Date(( 的 getTime(( 一起使用一样吗?

>Prototype添加一个实例方法,这意味着它附加到类的实例。对于您的示例,函数 getlastName 将仅按如下方式调用:

var p = new Person("first","last");
p.getlastName();

new Person("first","last").getlastName();

如果您希望getlastName附加到类本身,则无需使用 Prototype

Person.getlastName = () => { return this.lastName }

Date 类的情况下,now 是静态方法(不使用 Prototype(,而getTime是实例方法(使用 Prototype (。您可以在其文档中看到它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

以下是对静态和原型方法的引用: http://blog.anselmbradford.com/2009/04/09/object-oriented-javascript-tip-creating-static-methods-instance-methods/

相关内容

  • 没有找到相关文章

最新更新