js的this是指的当前对象

cuike519 2010-01-26 02:31:24
今天闲的蛋疼,看了看自己得分的帖子,翻到http://topic.csdn.net/u/20100124/19/4b11ef71-8202-44be-b541-9756f979b3d0.html

看到Sandy945下面回复:

---------------------------
喔卖糕的,

this是只当前对象!

这句话是有问题的
---------------------------

特开帖子讨论之。。。
...全文
259 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongxinai 2010-03-07
  • 打赏
  • 举报
回复
http://hi.baidu.com/bdui/blog/item/e9352dfbb26cb7146d22eb97.html
到这去看this吧!解释的很清楚。。。
xupeihuagudulei1 2010-03-07
  • 打赏
  • 举报
回复
看样子JS实在是太强大了
flyerwing 2010-01-26
  • 打赏
  • 举报
回复
当前文档吧
Dream_Hunter_ 2010-01-26
  • 打赏
  • 举报
回复
up
贴代码比较吧,各位。
huxinghuo123 2010-01-26
  • 打赏
  • 举报
回复
确切的说,应该是指此函数当前的调用者这个对象
seesea125 2010-01-26
  • 打赏
  • 举报
回复
this是指当前对象!

这句话是有问题的

-----
确实有问题,应该是this指向当前的对象实例
seesea125 2010-01-26
  • 打赏
  • 举报
回复
function中的this在没有调用的时候只是一个符号,不代表任何对象。只有当调用的时候才会产生一个内部对象,然后将内部对象的引用指针传递给对象实例。
如对象创建的方法:

function ClassA(){
this.b='test';
return this; //this在没有用行时只是一个符号;在调用时this才会检查这个调用的引用。
}
var a = ClassA(); //window.ClassA(); 此时只是把内部对象的指针传递a。相当已window调用ClassA(),故此时this为window,
alert(a==window) //true

var b=new ClassA(); //通过new newclass()执行,由于new的内部机制,会先创建一个对象,指向this,再将该对象的引用返回
alert(b==ClassA) //true

classA.prototype.c = 'd';
alert(a.c); //undefined,a为window对象,内部没有c变量
alert(b.c); //d
在prototype中,多次用到了下面这种写法:
如:

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}这里是返回一个函数对象,此时函数对象没有调用着。当创建一个对象后
var class=Class.create(); 此时得class只不过是一个函数对。
当用到
var obj=new class时,this才有了引用,指向当前得对象实例。

再看下面得例子:

Function.prototype.bind = function() {
var __method = this, // 这里的this表示bind方法的调用者, 是一个函数对象

args = $A(arguments), object = args.shift();
return function() {
return __method.apply(object, args.concat($A(arguments)));
}
}
阿非 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 原帖 9 楼 sandy945 的回复:]
this

在js 中就一个意思,当前调用者。


[/Quote]

this 始终指代的是 当前调用者 ,"当前调用者" 可以是任意 js 对象。

[Quote=引用 原帖 10 楼 sandy945 的回复:]

singles.map
-----------------

singles
->
this

[/Quote]

map 是 Function 对象

在map 内的 this

在当前的环境下 指向的就是 singles

阿非 2010-01-26
  • 打赏
  • 举报
回复
原帖 9 楼

[Quote=引用 原帖 9 楼 sandy945 的回复:]
this

在js 中就一个意思,当前调用者。


[/Quote]

this是只当前对象!

这句话是有问题的

-----------------------------------------

只所以这么说 是因为 js 有别于 oo 语言 , 因为 js 方法内的this指针并不是始终指向定义该方法的对象的. this指针的指向是可以改变的, 但它(this) 一直指向的是 当前运行该函数的对象,也就是当前调用者。


eg:


<script>
function OuterFn() {

this.Name = 'Outer';

return function InnerFn() {

var Name = 'Inner';

alert(Name + ',' + this.Name);

};

}

OuterFn()();
</script>




zhaobinzcb 2010-01-26
  • 打赏
  • 举报
回复
是调用对象本身

怎么了你有新发现吗
cuike519 2010-01-26
  • 打赏
  • 举报
回复
继续...
tzs2304 2010-01-26
  • 打赏
  • 举报
回复
this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象
十八道胡同 2010-01-26
  • 打赏
  • 举报
回复
当前对象
pdsnet 2010-01-26
  • 打赏
  • 举报
回复
一直迷迷糊糊的用.
mbh0210 2010-01-26
  • 打赏
  • 举报
回复
this 是指的当前对象.
qq497525725 2010-01-26
  • 打赏
  • 举报
回复
好像和作用域有关系吧.

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧