一个prototype的问题。。 prototypejavascript 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this不是说你声明在哪个function就是指那个作用域。this要看你的function是怎样被使用的您的例子中,Calendar();显然,this被指到了window上so,会报undefine错误的 当你在new 一个对象的时候,其实就是去new 构造函数,而this 的指向便是 new 出来的对象也就是说当你创建新对象时,同时调用一下bindData function Calendar(){ if(this.constructor!=Calendar){ new Calendar(); } this.bindData();}//原型方法Calendar.prototype.bindData=function(){ alert("bindData");}Calendar();你那样this指向的是window 所以方法无效 我是仿照别个写的、用Firebug看了下。我的是指向window,但他的为什么是指向的方法?是可以设置吗? 因为他写错了,或漏写了newnew Calendar(); 但他运行时没报错。http://test.yikeba.com/travel/templetview_n1.aspx?para=tgt0514042800094&day=2014-5-1这个网址的templetview_n1.js这个文件里第859行。 我只看到174行var calendar = new Calendar( data ); //fidate 没看到Calendar( data ); 有关this的作用域的一个小例子。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta content="text/html; charset=gb2312" http-equiv="Content-Type"></head> <body> <div align='center' id="ttt"></div> <script> Object.prototype.setname=function(){this.fff='1';} function Calendar () { alert(this); this.fff='2'; this.setname(); } Calendar(); var b = new Calendar(); alert(window.fff+" | "+Calendar.fff+" | "+b.fff); </script> </body></html> 看看js高级程序设计 P597 作用域的安全构造函数 楼上的已经说的很好了 谁知道明道的前台用的是什么技术 ExtJs如何在Window窗口中嵌套GridPanel?? iframe如何根据页面自动调整大小? javascript实现背景颜色渐变 如何判断一个字符串的最前面是否匹配指定的字符? Javascript如何读这个XML 求一正则 怪事年年有! 后台表单提交后,刷新前台数据,这个问题怎么解决! (关于Form的,谢谢!)http://expert.csdn.net/Expert/topic/1506/1506125.xml?temp=.3451502 EXTJS 化繁为简 减少冗余代码 用jquery如何表示这种情况呢
this要看你的function是怎样被使用的
您的例子中,
Calendar();
显然,this被指到了window上
so,会报undefine错误的
{
if(this.constructor!=Calendar){
new Calendar();
}
this.bindData();
}
//原型方法
Calendar.prototype.bindData=function(){
alert("bindData");
}
Calendar();
你那样this指向的是window 所以方法无效
new Calendar();
http://test.yikeba.com/travel/templetview_n1.aspx?para=tgt0514042800094&day=2014-5-1
这个网址的templetview_n1.js这个文件里第859行。
var calendar = new Calendar( data ); //fidate 没看到Calendar( data );
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
</head>
<body>
<div align='center' id="ttt"></div>
<script>
Object.prototype.setname=function(){this.fff='1';}
function Calendar ()
{
alert(this);
this.fff='2';
this.setname();
}
Calendar();
var b = new Calendar();
alert(window.fff+" | "+Calendar.fff+" | "+b.fff);
</script>
</body>
</html>