Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
376 views
in Technique[技术] by (71.8m points)

这个JavaScript代码中的this为啥和文档说明不一致呢? [问题点数:40分]

您好,我是一名前端小萌新,最近看到以下代码非常不理解。。。

为啥changeName()里的那个this和person()里的this,指的都是person对象呢?我看W3C文档里讲this指的应该是它本身这个函数对象呀(即指changeName),不理解啊。。。求路过的大神点拨一下,不胜感激!

function person(firstname,lastname,age,eyecolor)
 {
     this.firstname=firstname;
     this.lastname=lastname;
     this.age=age;
     this.eyecolor=eyecolor;
 
     this.changeName=changeName;
     function changeName(name)
     {
           this.lastname=name;
     }
 }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

当作构造函数调用时,this 指向了这个构造函数调用时候实例化出来的对象;

function Person(name) {
  this.name = name;
  console.log(this);
}

var p = new Person('qiutc');

// Person {name: "qiutc"}

当然,构造函数其实也是一个函数,如果把它当作一个普通函数执行,这个 this 仍然执行全局:

function Person(name) {
  this.name = name;
  console.log(this);
}

var p = Person('qiutc');

// Window

看你是如何调用的,this的指向问题有很多文章都讲了,网上很多这样的文章,有兴趣可以去搜索一下。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...