<!DOCTYPE html>
<html>
<body>
<script>
function person(firstname, lastname, age, eyecolor) {
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
this.eyecolor = eyecolor;
}
myFather = new person("Bill", "Gates", 56, "blue");
document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script>
</body>
</html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
基本只有 @jacklau 的答案答到了点上,其它的要么卖萌,要么自己没理解,要么无法说出来让别人理解。
自己不知道不要紧,最怕自己知道的是错的,更怕的是把错误的东西再教给别人,这是我看到这个答案之后感到很害怕的地方,因此也特意写一下。
首先,
this是一个语言中的关键字,这里我们假设不懂英语,不知道它的中文意思是当前、这个之类的,它就是一个对象。this这个对象是谁取决于函数被调用的方式。在JavaScript中,函数有四种调用方式:func(),此时函数中的this在ES3/ES5非严格模式下为全局对象,在浏览器中即为windowobj.func(),此时函数中的this为objapply/call调用,如obj1.func.apply(obj2),此时函数中的this为apply/call的第一个参数,如前例中为obj2constructor)调用,如new func(),这种情况下this为一个新的对象,假设叫它为obj,默认情况(func()没有使用return显式返回对象的情况下)下obj会作为new func()的结果被返回你的例子即这里说的第四种情况,
person()是作为一个构造函数被调用的,此时相当于:所以看这句
相当于在
person()被调用时新建了一个对象,然后分别对对象的各属性赋值,最后返回这个新对象,也就是这些赋值最后给了myFather。this不是定义时指定,而是运行时指定
之前的在另一个问题的回答 http://segmentfault.com/q/1010000000620780#a-1020000000621247
你有学过其他编程语言么?this关键字的意思就是对当前对象的引用。js的function就是对象。例如你这个person对象,它有自己的姓,有自己的名,自己的年纪,自己眼睛的颜色。this表达的意思就是“自己的”.this.age==自己的年纪。明白了吗?
this:
1.指向全局,浏览器中指向window
2.对象实例方法中this指向对象本身,如:
var a = {b : 1, bar : function(){alert(this.b) // this 与 a 相同}};
3.构造函数this指向未来的实例,如同楼主的例子:
var p = new person(/**/); // 此时this指向p
this指向对象本身,类似于python中的self
this就是本身对象
指向自己。
function person(firstname,lastname,age,eyecolor) { this.firstname = firstname; this.lastname = lastname; this.age = age; this.eyecolor = eyecolor; }这里的this就指向了person.
this.firstname = firstname相当于person.firstname = firstname.
题主为何辣么萌
JS中关于this最简单直接的解释就是谁调用它,谁就是this