这个词在JavaScript附近的含义是什么意思?

时间:2012-02-04 22:20:41

标签: javascript

你好,我是一个新手的JavaScript语言。 我开始看到一些JavaScript代码示例。

我无法理解以下代码段:

function Employee(name,salary)
 {
  this.name=name;
  this.salary=salary;

  this.paycheck=function()
  {
   var monthly=this.salary/12;
   document.write(this.name+ ": " +monthly);
  };
} 
var emp= new Employee("Fred",10000);
emp.paycheck();

我的问题:在课堂内属性附近的单词 this 的含义是什么(即this.name = name; this.salary = salary;)?

提前谢谢!

5 个答案:

答案 0 :(得分:2)

使用this可以解释为“适用于实例的属性”。由于Employee是构造函数(使用new运算符创建它的实例),因此每个实例都有自己的值用于这些属性:

var me = new Employee("James", 2000000); //Instance of Employee
console.log(me.name); //Prints James

var you = new Employee("Michael", 2000000); //Another instance
console.log(you.name); //Prints Michael

请注意,这也意味着Employee的每个实例都有自己的paycheck方法副本。这不是特别有效,因为必须将函数的单独副本存储在对象的每个实例的存储器中。您可以在prototype对象的Employee上声明该方法,这意味着该方法将在所有实例之间共享。

答案 1 :(得分:1)

  

在JavaScript中,这总是指我们所使用的函数的“所有者”   执行,或者更确切地说,是一个函数是一个方法的对象。   当我们在页面中定义忠实函数doSomething()时,它就是   owner是页面,或者说是窗口对象(或全局对象)   JavaScript的。但是,onclick属性由HTML元素拥有   它属于。

如需进一步阅读,请参阅以下链接:

http://www.quirksmode.org/js/this.html http://justin.harmonize.fm/index.php/2009/09/an-introduction-to-javascripts-this/ http://javascriptweblog.wordpress.com/2010/08/30/understanding-javascripts-this/

答案 2 :(得分:1)

this是对函数调用上下文的引用。

根据调用函数的方式,它的值会有所不同。

在您的情况下,因为Employee是使用new调用的,所以它是对正在构造的新对象的引用。

所以,当你这样做......

this.name=name;

...正在发生的事情是,您正在创建的新对象被分配了一个属性name,其值被设置为传递给{{1}的任何内容函数的参数。


这是展示它的一种方式。

简化你的功能......

name

现在所有var foo; function Employee() { foo = this; } 都将其Employee值设置为外部变量this

现在让我们创建一个新对象

foo

因此var bar = new Employee(); 被分配了返回的bar。如果Employee是构建的新对象,并且我们将其分配给this,那么foofoo应该具有相同的对象。

bar

答案 3 :(得分:1)

在这种情况下,Employee函数用于构造函数。使用new Employee()语法时(而不是简单地调用Employee()),this指的是您要创建的对象,稍后会将其分配给emp变量

答案 4 :(得分:1)

它是类内属性的定义。 您可以在http://www.phpied.com/3-ways-to-define-a-javascript-class/

阅读有关它的简短信息

始终引用我们正在执行的功能的“所有者”