如何从Javascript函数实例化?
Q1)这怎么可能如何从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)这是可
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:对不起,伙计,出于兴奋:-)真的吗?我们抱怨人们现在在问答网站上提问?