87,841
社区成员




function Ttest()
{
this.SayHello = function()
{
console.log("Hello");
};
var SayBye = function()
{
console.log("Bye");
this.SayHello();
};
this.ByeBye = function()
{
console.log("ByeBye");
SayBye();
// this.SayHello();
};
}
var g_test = new Ttest();
g_test.ByeBye();
ByeBye main.js:17
Bye main.js:11
Uncaught TypeError: Object [object global] has no method 'SayHello' main.js:12
var SayBye = function()
{
console.log("Bye");
this.SayHello(); ====》 这里的this指向是global,是全局的而不是指向Ttest的
所以就有后面的异常了。
};
在函数对象你不,如果你没有用this去申明一个函数,例如上面的Saybye那么函数内部的this指针是指向全局的而不是指向当前函数对象的,这个例子通过测试也很简单,你只要输出this看看就知道了,例如下面的完整例子
function Ttest(){
this.Say = function(){
console.log("this:" + this ); //这里this指向是函数对象(Ttest)
}
var Say_fuck = function(){
console.log("this:" + this); //指向全局,global/window
}
};