javascript - 如何以 OOP 风格模仿 JavaScript 中的构造函数?

标签 javascript oop

以 OOP 方式,我定义一个 Person“类”,如下所示:

var Person = {
  name: '',
  age: 32,
  gender: 'male',
  interests: ['music', 'skiing'],
  bio: function() {
    alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
  },
  greeting: function() {
    alert('Hi! I\'m ' + this.name + '.');
  }
};

现在,我正在实例化上面的类。

var person1= Object.create(Person);
person1.name = 'personname';
person1.greeting();

如何模仿构造函数,以便当 Object.create(Person) 创建新对象时,自动计算构造函数代码?

最佳答案

您可以将代码包装在一个函数中,并在那里调用它。 Object.create将与原型(prototype)建立关系,但不会自动调用任何其他代码。

function person(name) {
  var person1 = Object.create(Person);
  person1.name = name;
  return person1;
}

person('personname').greeting();

您还应该避免将变量的首字母大写,除非它们是应该使用 new 调用的函数。这是仅用于构造函数的命名约定。

关于javascript - 如何以 OOP 风格模仿 JavaScript 中的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996432/

相关文章:

javascript - 设置多个属性时如何限制号码变化事件?

javascript - 在应用 CSS 类后获取更新的 div 偏移量

java - Java 中的变量继承

javascript - Javascript OOP 中的未知未定义

javascript - 如何在不使用 'require' 或 'import' 的情况下导入 NPM 模块?

javascript - Typescript - 如果 map 内有条件

javascript - <select> 使用 ng-options 查询显示多个字段

java - 如何引用当前类的类型?

java - 具有泛型的构建器

python - 如何在 python 的类方法中注入(inject)代码?