`
sam1982
  • 浏览: 10017 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

请指教对象直接量中引用this的问题?

阅读更多
如下代码:
(1)
var xx = function() {
this.a = "xx";
this.b = this.a;
}
alert(new xx().b);

(2)
var x = function() {
this.a = "x";
this.b = {a:"x.b",b:this.a,c:function(){return this.a;}};
}
var s = new x();
alert(s.b.c());

代码(1)的结果是 "xx" ,也就是说this.b = this.a 引用的本对象中的另一个属性也就是a,
但(2)中的结果是 "x.b",这本来也是我意料中的事,因为肯定是引用着本对象中的a,但b:this.a,这里的a为什么引用的是x 类中的a变量而不是 b变量中的a变量中呢?是不是因为对象直接量中的属性(非function属性)不用引用或者说不存在this指针?请指点一下..........
分享到:
评论
7 楼 andot 2007-05-22  
hax 写道
andot 写道
hax 写道
楼上基本上说清楚了。js中的this关键字只在function内有效(或者指向global对象),要知道this指的是哪一个,看一下当前最近的function scope即可。
不过未来的js2.0会改变一下规则。


this 跟 function scope 没关系,this 只跟执行上下文有关系。



我指的是他帖子里的问题,要知道多个this分别对应的哪个,需要先搞清this所属的function(或者不属于任何function)。你说的那个是执行时。两码事。


你要说 this 所在的那个执行的 function 所属的对象(或者不属于任何对象)我就明白了。
6 楼 hax 2007-05-22  
andot 写道
hax 写道
楼上基本上说清楚了。js中的this关键字只在function内有效(或者指向global对象),要知道this指的是哪一个,看一下当前最近的function scope即可。
不过未来的js2.0会改变一下规则。


this 跟 function scope 没关系,this 只跟执行上下文有关系。



我指的是他帖子里的问题,要知道多个this分别对应的哪个,需要先搞清this所属的function(或者不属于任何function)。你说的那个是执行时。两码事。
5 楼 andot 2007-05-22  
hax 写道
楼上基本上说清楚了。js中的this关键字只在function内有效(或者指向global对象),要知道this指的是哪一个,看一下当前最近的function scope即可。
不过未来的js2.0会改变一下规则。


this 跟 function scope 没关系,this 只跟执行上下文有关系。
4 楼 笨笨狗 2007-05-21  
应该是this.b.c吧,呵呵
这么说也是有道理的,是对上面说的“变量作用域”的另一个解释而已
3 楼 sam1982 2007-05-21  
会不会是因为对象直接量在生成的顺序的问题而导至的呢,而跟变量作用域没有关系呢,如下:
var x = {a:"x"};
是否等同于:var x = new Object();x.a="x";
如果是这样的话就不难解释上面的了,因为
var x = function() {
this.a = "x";
this.b = {a:"x.b",b:this.a,c:function(){return this.a;}};
}
就等同于
var x = function() {
this.a = "x";
this.b = new Object();
this.b.a="x.b";
this.b.b=this.a;
this.c=function(){return this.a;};
}
2 楼 hax 2007-05-21  
楼上基本上说清楚了。js中的this关键字只在function内有效(或者指向global对象),要知道this指的是哪一个,看一下当前最近的function scope即可。
不过未来的js2.0会改变一下规则。
1 楼 笨笨狗 2007-05-21  
javascript的变量作用域是函数(function)级的,而不是块级(即大括号包围的块)的,所以,在c:function(){}这条语句前面的代码,都属于第一个函数var x = function() { }的作用范围,当然this就是这个范围的this了,但是c里面是另一个范围,这就不难理解了。

不知道我说清楚没有,汗自己一个……

相关推荐

    对HANOI问题的详细程序描述!如果你有觉得有问题的地方请指教!希望能帮助你!

    对百鸡问题的详细程序描述!如果你有觉得有问题的地方请指教!希望能帮助你,你也知道这门课很难学吧!

    电子宠物 问题很多请指教

    下面将详细讨论C#、SQL Server 2005在电子宠物游戏中的应用以及可能遇到的问题。 首先,C#在游戏开发中的主要职责是实现游戏逻辑和用户界面。电子宠物游戏中,C#用于创建宠物的行为模型,比如喂食、玩耍、休息等...

    简单的游戏,请指教啊

    在这款名为"简单的游戏,请指教啊"的作品中,开发者运用了C#编程语言的一些核心特性来构建游戏。下面我们将详细探讨这些知识点,包括面向对象的四个特点、接口的应用、泛型集合的使用以及序列化的功能。 首先,面向...

    新人类请多指教名片制作系统XP.rar

    新人类请多指教名片制作系统是制作名片用的。1.授权: 本授权合同授于 贵用户下列权利: A.应用程序软件: 贵用户得于单一计算机上安装并使用乙份「软件产品」之 拷贝或同一操作系统之任何先前版本。已安装...

    Java笔试题,有误请指教

    基本类型直接存储值,包装类则用于对象操作,例如在集合框架中使用。 7. **String与StringBuffer的区别**:`String`是不可变的,每次修改都会创建新的对象,而`StringBuffer`或`StringBuilder`支持在原对象上进行...

    关于check复选的问题,请指教,谢谢!

    在此问题中,提问者可能遇到了与复选框功能实现、交互逻辑或编程实现相关的疑问,需要专业人士提供指导。下面,我将详细讨论复选框的相关知识点。 1. 复选框的基本概念: 复选框是图形用户界面(GUI)中的一个控件...

    皇后问题的程序描述对百鸡问题的详细程序描述!如果你有觉得有问题的地方请指教!希望能帮助你

    对皇后问题的详细程序描述!如果你有觉得有问题的地方请指教!希望能帮助你,你也知道这门课很难学吧!

    我的C++心得 大家指教指教!!!

    描述中的“一点点心得而已”和“大家一起加油”,暗示了这篇心得可能包含了一些初学者可能遇到的问题以及作者如何克服它们的心得体会。 在“my best”的标签下,我们可以推测这可能是作者认为最宝贵或最有价值的...

    自学遇到的问题截图,请高手指教

    学习中遇到的问题截图学习中遇到的问题截图学习中遇到的问题截图学习中遇到的问题截图学习中遇到的问题截图

    java小屁程序案例请指教

    7. **异常处理**:虽然没有直接的文件名暗示,但在实际编程中,良好的Java实践包括使用try-catch-finally语句来捕获和处理可能出现的运行时错误。 8. **标准库和API**:Java提供了丰富的标准库,例如I/O流、集合...

    吹泡泡游戏,请多多指教哦

    【吹泡泡游戏,请多多指教哦】 这是一款名为“吹泡泡”的小游戏,它虽然小巧,但功能完备,足以满足用户休闲娱乐的需求。游戏的核心玩法可能是让玩家通过触屏操作,控制角色吹出泡泡,然后看着泡泡在屏幕上飘动,...

    asp软件请指教

    ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,主要用于构建动态网页和Web...遇到问题时,可以寻求社区支持,比如在论坛发帖求助,与其他开发者交流经验,这样能加快学习进度并提升解决问题的能力。

    简易魔方生成器 不足请指教 请关注新版本

    生成简易的魔方,能生成3——501阶的简易魔方,并保存起来,速度还可以,自己写的!不足请指教! 请关注新版本 请关注新版本 请关注新版本 请关注新版本

    C#索引器代码,高手请指教

    - 在C#中,索引器是通过`this`关键字定义的,通常在`get`和`set`访问器中使用,以获取或设置索引对应的值。 2. **定义索引器** ```csharp public class MyCollection { private int[] elements; public ...

    模糊评价的基本代码请多指教

    模糊评价的基本代码请多指教

    C#简易计算器,新手请指教

    在C#编程语言中,创建一个简易计算器是一个经典的练习,对于初学者来说,这有助于理解面向对象编程的基本概念。在你的任务中,你被要求构建一个C#的计算器程序,并且学习如何处理用户输入,尤其是从键盘接收输入。...

    自制坦克大战,稍有不足,请多指教

    在本项目中,开发者运用了C++的基本语法、类和对象、条件语句、循环结构等核心概念。 首先,C++的面向对象特性是游戏开发的关键。在这个坦克大战项目中,开发者可能创建了多个类来代表不同的游戏元素,如坦克类...

    数据库低层操作(对于大量字段,省了sql语句)

    在数据库管理中,高效地操作大量字段是至关重要的,特别是在处理大数据量的场景下。标题“数据库低层操作(对于大量字段,省了sql语句)”暗示我们将探讨一种方法,通过这种方式可以避免编写复杂的SQL语句来实现对大量...

    面向对象.xmind

    使用Xmind软件大概绘制了一下java面向对象的学习流程,欢迎交流指教! 面向对象基础 进阶 高级 写的框架很细, 初学者可以做参考学习。 谢谢!

Global site tag (gtag.js) - Google Analytics