如何从Javascript函数实例化?

如何从Javascript函数实例化?,javascript,inheritance,Javascript,Inheritance,Q1)这怎么可能 function employer(name) { this.name = name;}; var fred = new employer('Fred'); 雇主不是一个函数而不是一个类吗 问题2)这是什么 employer.prototype 意味着什么 最后 问题3)这是如何工作的 employer.prototype.salary = null; fred.salary = 2000; 有人能简单解释一下吗?请:)当您要求一个简单的解释时,我们开始: Q1)这是可

Q1)这怎么可能

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

var fred = new employer('Fred');
雇主不是一个函数而不是一个类吗

问题2)这是什么

employer.prototype
意味着什么

最后

问题3)这是如何工作的

employer.prototype.salary = null;
fred.salary = 2000;

有人能简单解释一下吗?请:)

当您要求一个简单的解释时,我们开始:

Q1)这是可能的,因为JavaScript函数是一流的(即,它们是对象,您可以创建
新的
对象)

Q2)原型是一个对象,其他对象从中继承属性。对象原型的属性将可用于该对象的所有实例

Q3)这意味着
employer
的所有实例都将有一个值为
null
的属性
salary
。名为
fred
employer
实例只是用
2000
覆盖初始
null
值。但它是相同的
salary
属性(当您使用属性时,会搜索范围链,直到找到匹配项。在这种情况下,会在对象原型上找到匹配项)

快速示例:

function employer(name) { this.name = name;};
employer.prototype.salary = 1000;

var fred = new employer('Fred');
var jim = new employer('Jim');

console.log(fred.salary) //Prints 1000 because employer.prototype.salary == 1000
fred.salary = 2000;
console.log(fred.salary) //Prints 2000 because fred's salary has been changed
console.log(jim.salary) //Prints 1000 because jim's salary is still referencing the prototype

fred.age = 30;
console.log(fred.age) //Prints 30
console.log(jim.age) //Prints undefined (age is a property of fred, not employer.prototype

阅读本文-:DCan您不可以自己搜索Javascript OO主题吗?几乎所有的基础教程都应该涵盖你所有的问题。为什么你要把三个问题放在一个问题里,而不是创建三个独立的问题?@RaYell:对不起,伙计,出于兴奋:-)真的吗?我们抱怨人们现在在问答网站上提问?