为什么要在对象声明之外而不是在内部创建JavaScript对象方法?

时间:2019-03-28 21:48:31

标签: javascript javascript-objects prototypal-inheritance

我在OOP方面有很好的背景,主要是C ++和Java。我想在JavaScript中使用对象,包括继承。我读过的关于JS继承的文章总是谈论原型继承模型。为JS对象创建函数(方法)时,总是在声明对象本身之后以Object.prototype.funcName = function() { }这样的格式声明它们。是的,这可行,但是在声明对象内部的函数时似乎也可行,例如:this.funcName = function() { };

这是我读过的文章之一:https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Inheritance

我已经用两种方法测试了我的代码,它们似乎工作得很好。有人可以通过在对象中声明我的功能(例如标准OOP)来告诉我是否会遇到任何问题,还是最后会咬住我?

这是我的方式:

function Person(name) {
  this.name = name;

  this.greeting = function() {
    console.log('Hi! I\'m ' + this.name + ' from Person');
  };
};

这是原型方法:

function Person(name) {
  this.name = name;
};

Person.prototype.greeting = function() {
  console.log('Hi! I\'m ' + this.name + ' from Person.proto');
};

创建对象并调用问候语可以通过以下两种方式进行:

var person = new Person("Cool Dood");

person.greeting();

关于在对象声明中声明函数的“我的”方式将来是否会给我带来麻烦的任何见解?

0 个答案:

没有答案