我读到了关于javascript函数/原型和(fiddle提供)的文章

I was reading about javascript functions/prototypes, and (fiddle provided)

本文关键字:fiddle 提供 文章 原型 函数 javascript      更新时间:2023-09-26

我偶然发现了一段我很好奇的代码1(在页面底部的函数原型部分):

function Employee(name, salary)
{
 this.name=name;                
 this.salary=salary;
}
/*line7*/ Employee.prototype.getSalary=function getSalaryFunction()
{
  return this.salary;
}
/*line12*/ Employee.prototype.addSalary=function addSalaryFunction(addition)
{
  this.salary=this.salary+addition;
}

1) 我想知道是否可以按照以下方式编写相同的东西,以及其中一个是否更实用?:

i) 添加

this.getSalary = getSalaryFunction;
this.addSalary = addSalaryFunction;

我现在假设的是原型(在namesalary属性之后),和ii)将原来的第7行和第12行分别替换为:

function getSalaryFunction()

function addSalaryFunction(addition)

此外,在这种情况下,/*return?*/Employee.salary+=addition;将是this.salary = this.salary + addition;的简写,对吧?

jsfiddle代表了我的想法:http://jsfiddle.net/4fL8v69b/1/

1http://www.permadi.com/tutorial/jsFunc/index.htmlWeb开发人员介绍JavaScript"函数"对象的特性

在您的示例中,您将函数getSalaryFunctionaddSalaryFunction添加到全局(或至少外部)作用域,在那里它们可以独立调用(并且可能返回未定义的)

在最初的例子中,函数只作为其父对象的一部分存在,因此它们在被调用时更有可能做正确的事情。

*我正在为JS中this的复杂性挥手。