1. class User {
  2. constructor(name) {
  3. this.name = name;
  4. }
  5. getName() {
  6. return this.name;
  7. }
  8. }
  9. var u = new User('Jack')
  10. u.getName()
  11. "Jack"

image.png

es5写法

  1. function User(name) {
  2. this.name = name
  3. }
  4. User.prototype.getName = function getName() {
  5. return this.name
  6. }
  7. var u = new User('Mary')
  8. u.getName()
  9. "Mary"

注: 若写为匿名函数,
User.prototype.getName = function () {
return this.name
}
image.png

常见错误写法!

  1. function User(name) {
  2. this.name = name
  3. const _this = this
  4. this.getName = function getName() {
  5. return _this.name
  6. }
  7. }
  8. var u = new User('Lucy')
  9. u.getName()

区别在于keys

  1. Object.keys(u)
  2. (2) ["name", "getName"]
  3. // 正确
  4. Object.keys(u)
  5. ["name"]