我不明白JavaScript在什么时候使用单词“ prototype”与使用简单的“ dot”符号而不使用单词“ prototype”。有人可以看看这些代码块,并帮助我理解何时要使用另一个代码块吗?
with“原型”:
function employee(name,jobtitle)
{
this.name=name;
this.jobtitle=jobtitle;
}
var fred=new employee("Fred Flintstone","Caveman");
employee.prototype.salary=null;
fred.salary=20000;
console.log(fred.salary);
没有“原型”:
function employee(name,jobtitle,salary)
{
this.name=name;
this.jobtitle=jobtitle;
this.salary=salary;
}
var fred=new employee("Fred Flintstone","Caveman", 20000);
console.log(fred.salary);
JavaScript对象具有一个属性,该属性是指向另一个对象的指针。该指针是对象的原型。默认情况下,对象实例共享相同的原型:
关于JS和继承的问题可能很复杂,但是您问题的答案相对简单。考虑以下代码:
ES5的Object.create
几乎消除了再麻烦.prototype
的麻烦。
prototype
对象有点难以理解;但是this article on OOP JavaScript可以帮助您了解一些信息。
忽略new
,忽略.prototype
,它们只是令人困惑的概念。如果您确实想要原型继承,请使用Object.create
,但大多数情况下,继承完全是多余的。 (原型继承只能用作优化技术)。
使用原型,您可以以“更干净”的方式扩展,因为您将构造函数中的逻辑与定义对象的属性和方法分开。