【每日一题】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());
- A: TypeError
- B: SyntaxError
- C: Lydia Hallie
- D: undefined undefined
知识点
- js构造函数和类[https://es6.ruanyifeng.com/#docs/class#%E7%AE%80%E4%BB%8B]
转载地址:
https://github.com/lydiahallie/javascript-questions#11-whats-the-output
解析:在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