js中的上下文常常代表this变量的值,以及this变量的指向,当一个函数当作一个方法被调用时,this指向的是调用这个方法的对象
通过以下几种实例来了解一下
第一种情况,作为对象的方法
var pet={
words:"...",
speak:function(){
console.log(this.words);
console.log(this==pet);
}
}
pet.speak();
控制台输出:
...
true
说明this指向的就是对象pet
第二种情况,直接调用函数
function pet(words){
this.words=words;
console.log(this.words);
console.log(this==globle);
}
pet('...');
控制台输出:
...
true
说明调用pet方法的并不是pet本身,而是node.js中的顶层对象globle
第三种情况,构造函数
function Pet(words){
this.words=words;
this.speak=function(){
console.log(this.words);
console.log(this);
}
}
var cat = new Pet('Miao')
cat.speak()
控制台输出:
Miao
Pet { words: 'Miao', speak: [Function] }