[code=HTM]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
var $this = this;
var v1 = "";
var v2 = "";
function a() {
v1 = this;
alert("2:" + ($this == this));
this.userName = "zhangsan";
alert("3:" + userName);
}
function b() {
v2 = this;
alert("4:" + ($this == this));
var tempB = a;
tempB();
this.userName = "android";
alert("5:" + userName);
tempB();
}
b();
alert(v1 == v2); //方法a和方法b中的this不是同一个对象,为什么对象相等?</script></body>
</html><!--
问题:
1:
var $this = this;中的this和方法a,b中的this,不是同一个对象;可是为什么相等
要是同一个对象在调用下面代码之后
var tempB = a;
tempB();
this.userName = "android";
alert("5:" + userName);
tempB(); //this的指向在上面不是改变了么,为什么此时弹出的结果还是zhangsan,而不是android呢?
2:在方法最外面的this和在a,b方法中的this的区别?
------------------------------------
自己也是刚去接触JavaScript,请高手指点 -->[/code]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
var $this = this;
var v1 = "";
var v2 = "";
function a() {
v1 = this;
alert("2:" + ($this == this));
this.userName = "zhangsan";
alert("3:" + userName);
}
function b() {
v2 = this;
alert("4:" + ($this == this));
var tempB = a;
tempB();
this.userName = "android";
alert("5:" + userName);
tempB();
}
b();
alert(v1 == v2); //方法a和方法b中的this不是同一个对象,为什么对象相等?</script></body>
</html><!--
问题:
1:
var $this = this;中的this和方法a,b中的this,不是同一个对象;可是为什么相等
要是同一个对象在调用下面代码之后
var tempB = a;
tempB();
this.userName = "android";
alert("5:" + userName);
tempB(); //this的指向在上面不是改变了么,为什么此时弹出的结果还是zhangsan,而不是android呢?
2:在方法最外面的this和在a,b方法中的this的区别?
------------------------------------
自己也是刚去接触JavaScript,请高手指点 -->[/code]
解决方案 »
- 如何实现回车是指定文本框数值相加,结果放入另一文本框
- offsetWidth的浏览器兼容问题。
- ext基础问题,请指教,监听修改checkbox的checked,但是页面没跟随改变
- 请帮忙改下jsp使得支持Firefox及opera
- 怎么让弹出框不透明,问题已被困扰多天,期望高手解决
- 用Ajax无刷新能不能实现蜡烛的燃烧
- 請問在javascript 中有什么函數或方法得到document.formname.textname.value全為space值
- flash影片是不是总在最顶层?我写了一个移动的层,<div>的,总是被flash遮住!能解决吗??
- 部分全选checkbox按钮的进一步讨论!
- 在JavaScript中,按下鼠标左键时怎样判断鼠标点中的对象的名字?
- 请教js网页需要设置浏览器权限吗?
- Ext show方法为什么不管用
http://wenku.baidu.com/view/46c665ed102de2bd960588f1.html
严格相等(同一对象),应用alert(v1 === v2); 判断
v1 = this;
alert("a-this:" + ($this === this));
……
function b() {
v2 = this;
alert("b-this:" + ($this === this));你这些调用,this都是window。自然同一对象。1+1在算对的情况下就等于2。
<script type="text/javascript">
var $this = this;
var v1 = "";
var v2 = "";
function a() {
v1 = this;
};
function b() {
v2 = this;
};
var fn1 = {};
fn1.m1 = a;
var fn2 = {};
fn2.m2 = b;
fn1.m1();
fn2.m2();
alert("$this=" + $this + " ,v1=" + v1 + " ,v2=" + v2);</script>说白了是this的运行环境上下文不同造成的!!!