function ShowHome(){document.write(this.home);
}
function Furit(home,color,price){ this.home=home;
this.color=color;
this.price=price;
this.ShowHome=ShowHome;//?为什么不能写成函数的形式
}
上面的代码是用构造函数的方法创建类,我不理解的是this.ShowHome=ShowHome;为什么这么写this.ShowHome()=ShowHome();不行吗,求指教。
}
function Furit(home,color,price){ this.home=home;
this.color=color;
this.price=price;
this.ShowHome=ShowHome;//?为什么不能写成函数的形式
}
上面的代码是用构造函数的方法创建类,我不理解的是this.ShowHome=ShowHome;为什么这么写this.ShowHome()=ShowHome();不行吗,求指教。
this.属性 属性名不可能是函数,不能添加()
ShowHome 函数名,是函数指针/函数对象/函数引用,代表函数本身
ShowHome()执行函数,如果有返回值,也表示函数的返回值
还是把基础补一补吧,多写点代码,先不要急于学习js的面向对象
his.ShowHome()=ShowHome()你这个意思是把方法赋值给一个方法 仿佛没有任何意义。
this.ShowHome = ShowHome;这条语句表示给this注册一个属性并吧ShowHome赋值给这个属性,这样,this.ShowHome和ShowHome就指向了相同的函数。
this.ShowHome() = ShowHome();
这条语句的写法是错误。 首先,变量名加(),只有在变量指向一个函数的情况下是合法的,表示运行该指向的函数。 赋值语句期望一个合法的左值, 而函数运行得到返回值,返回值其实放在临时的空间里,函数返回值是不能作为左值的。当然,它是一个合法的右值。所以:
this.ShowHome = ShowHome();
这样写是语法正确的。但是,这样写的含义就和上面完全不同了,()表示运行,那么就是给this注册ShowHome属性,并把ShowHome()的返回值赋值给该属性。