推荐好文:javascript的函数(8)

alert(manager.name+"/'s supervisor is "+manager.supervisor.name)

 

会输出什么呢?运行示例

就像你在上面这个例子中看到的那样,managerteamLeader都有一个supervisor属性,而这个属性是范例Employee的一个工具。

将函数作为属性

任何范例的工具都可以作为一个属性,回想一下前面的(不是Example DT4),函数也是一个工具。所以你可以让一个函数作为一个工具的一个属性。下面,我将添加两个函数getSalaryaddSalary

Example DT7

Language:javascript, parsed in: 0.021 seconds, using GeSHi 1.0.7.12

function Employee(name, salary)

{

  this.name=name;               

  this.salary=salary;

 

  this.addSalary=addSalaryFunction;

 

  this.getSalary=function()

                 {

                   return this.salary;

                 };

}

function addSalaryFunction(addition)

{

  this.salary=this.salary+addition;

}

 

var boss=new Employee("John", 200000);

boss.addSalary(10000);                    // boss 长了 10K 人为……为什么老板人为可以长这么多:'(

alert(boss.getSalary());                  // 输出 210K……为什么默认人为也那么高……:'(

 

运行示例

addSalarygetSalary演示了几种将函数赋给属性的差异要领。假如你记得我们最开始的接头;我接头了三种声明函数的差异方法。所有那些在这里都是合用的,可是上面展示的两个最常用。

让我们看看有什么差异。下面,留意一下9-12行的代码。当这部门代码执行的时候,函数getSalary被声明。如前面数次提到的,一个函数声明的功效是一个工具被建设。所以这时候boss被建设(接下来的高亮行),而boss里有一个getSalary属性。

Language:javascript, parsed in: 0.022 seconds, using GeSHi 1.0.7.12

function Employee(name, salary)

{

  this.name=name;               

  this.salary=salary;

 

  this.addSalary=addSalaryFunction;

 

  this.getSalary=function()

                 {

                   return this.salary;

                 };

}

function addSalaryFunction(addition)

{

  this.salary=this.salary+addition;

}

 

var boss=new Employee("John", 200000);

var boss2=new Employee("Joan", 200000);

var boss3=new Employee("Kim", 200000);

 

 

当你建设这个工具的更多实例时(boss2boss3),每一个实例都有一份getSalary代码的单独拷贝;而与此相反,addSalary则指向了同一个处所(即addSalaryFunction)。

推荐好文:javascript的函数

看看下面的代码来领略一下上面所描写的内容。

Example DT8

Language:javascript, parsed in: 0.035 seconds, using GeSHi 1.0.7.12

function Employee(name, salary)

{

  this.name=name;               

  this.salary=salary;

 

  this.addSalary=addSalaryFunction;

  this.getSalary=function()

                 {

                   return this.salary;

                 };

}

function addSalaryFunction(addition)

{

  this.salary=this.salary+addition;

}

 

var boss1=new Employee("John", 200000);

var boss2=new Employee("Joan", 200000);

 

 

// 给getSalary函数工具添加属性

boss1.getSalary.owner="boss1";

boss2.getSalary.owner="boss2";

alert(boss1.getSalary.owner);   // 输出 "boss1"

alert(boss2.getSalary.owner);   // 输出 "boss2"

// 假如两个工具指向同一个函数工具,那么

// 上面两个输出都应该是“boss2”。

 

// 给addSalary函数工具添加属性

boss1.addSalary.owner="boss1";

boss1.addSalary.owner="boss2";

alert(boss1.addSalary.owner);   // 输出 "boss2"

alert(boss2.addSalary.owner);   // 输出 "boss2"

// 因为两个工具都指向同一个函数,(子乌注:原文写are not pointing to the same function,疑为笔误)

// 当修改个中一个的时候,会影响所有的实例(所以两个都输出“boss2”).

 

 

运行示例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/8590.html