两个初级问题请教:
问题1:以下两种输出为何不同呢?加不加括号,区别何在呢?
//问题2:如果为yy赋初值,则下面两个alter显示相同,但是如果不赋值,则this.yy显示undefined,可是yy却报错
<script type="text/javascript">
var a={x:1,y:2}; //问题1:以下两种输出为何不同呢?加不加括号,区别何在呢?
alert(a.toString());
alert(a.toString); //问题2:如果为yy赋初值,则下面两个alter显示相同,但是如果不赋值,则this.yy显示undefined,可是yy却报错
//var yy=99;
alert(this.yy);
alert(yy);
</script>
问题1:以下两种输出为何不同呢?加不加括号,区别何在呢?
//问题2:如果为yy赋初值,则下面两个alter显示相同,但是如果不赋值,则this.yy显示undefined,可是yy却报错
<script type="text/javascript">
var a={x:1,y:2}; //问题1:以下两种输出为何不同呢?加不加括号,区别何在呢?
alert(a.toString());
alert(a.toString); //问题2:如果为yy赋初值,则下面两个alter显示相同,但是如果不赋值,则this.yy显示undefined,可是yy却报错
//var yy=99;
alert(this.yy);
alert(yy);
</script>
解决方案 »
- EXTJS Grid嵌套Grid 选择行问题
- JQ动态给SELECT第N个元素添加点击事件
- 如何用JS判断上传文件的大小?
- 函数凋用
- js 刷新父页面的div id行吗?
- 动态添加的embed SVG元素如何获得其svgdoc?
- js弹出层 随页面滚动都居中,遇到点问题,还请大家帮帮忙,代码如下.
- 打开窗口后,为什么没法从父窗口中 获取(设置) 子窗口的数据?
- 小弟不才,jquery渐变覆盖掉了<span>不得解,在线等,100分相送
- 如何不建立数据库,实现修改用户名和密码功能??
- 使用setTimeout递归实现定时操作和使用setInterval有什么区别?
- (急!!高分求助)onload和输入框,两个问题
如.var x = "xxxxxxx" , x.length ,length就是属性,没有()问题2.不给yy赋初值,谁又知道yy是个什么东西啊。所以this.yy=undefind了。alert(yy)成为没有定义yy了.this表示是这个对象。对象找不到undefind。
这个时候不用加括号;
若是激活一个方法:object.method()
这个时候就需要加括号了.
因为如果使用错误的话,应该报错,但是实际没有报错,只是显示不同。所以我问问,二者有何区别?
<script type="text/javascript">
var a={x:1,y:2}; //问题1:以下两种输出为何不同呢?加不加括号,区别何在呢?
alert(a.toString());//这里输出的是执行结果
alert(a.toString); //这里输出的是这个方法。以为没执行,所以出来的就是其本身咯 //问题2:如果为yy赋初值,则下面两个alter显示相同,但是如果不赋值,则this.yy显示undefined,可是yy却报错
//var yy=99;
alert(this.yy); //this.yy是this的一个属性,那么他就是一个为初始化的属性呗
alert(yy); //yy是一个变量,但是这个变量却没有声明(定义)
</script>如果说var yy=99;了
那么yy自动成为了全局变量window的一个属性
而this => window
所以结果一样~
你定义的a是一个JSON形式的object 它里面有一个key为toString其value是定义的toString方法,所以你用a.toString显示的是这个方法的定义,而a.toString()是调用的toString()方法
alert(typeof(a.toString()));//string
alert(typeof(a.toString));//function你可以这样试试 第一个typeof是toString()方法的返回值类型
第二个typeof是a.toString的类型,这里a.toString 相当于a["toString"]