你好,我是一个新手的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;)?
提前谢谢!
答案 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
,那么foo
和foo
应该具有相同的对象。
bar
答案 3 :(得分:1)
在这种情况下,Employee
函数用于构造函数。使用new Employee()
语法时(而不是简单地调用Employee()
),this
指的是您要创建的对象,稍后会将其分配给emp
变量
答案 4 :(得分:1)
它是类内属性的定义。 您可以在http://www.phpied.com/3-ways-to-define-a-javascript-class/
阅读有关它的简短信息此始终引用我们正在执行的功能的“所有者”