其他分享
首页 > 其他分享> > 【每日一题】11

【每日一题】11

作者:互联网

1.输出什么?

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const member = new Person('Lydia', 'Hallie');
Person.getFullName = function() {
  return `${this.firstName} ${this.lastName}`;
};

console.log(member.getFullName());

知识点

转载地址:
https://github.com/lydiahallie/javascript-questions#11-whats-the-output

解析 答案:A

解析:在js中,方法是对象,因此,getFullName 方法只是加到Person 这个构造函数本身这个对象而已。由于这样的原因,我们可以调用Person.getFullName(),而 member.getFullName 抛出错误TypeError。

假如你想要所有的对象实例都有getFullName方法,那应该加到Person原型链上。

Person.prototype.getFullName = function() {
  return `${this.firstName} ${this.lastName}`;
};

关于构造函数和类:

js中,生成实例对象的传统方式是通过构造函数

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
  return '(' + this.x + ', ' + this.y + ')';
};

var p = new Point(1, 2);

es6 引入class,可将class当作语法糖。

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}

这两种写法都是表达的一个意思。定义Point对象
摘录自:https://es6.ruanyifeng.com/#docs/class#%E7%AE%80%E4%BB%8B

标签:11,function,firstName,Point,lastName,每日,Person,getFullName
来源: https://blog.csdn.net/z767327552/article/details/118601174