解析对象体内与方法体内引用内部方法的不同

       /*对象体内*/
       var a={
         init:function(){a.func1();}, //这里要加this或者对象a,但方法体内同等格式不用,思考这其中的差别
         func1:function(){alert(1);}
       }
       a.init(); //执行

       /*方法体内*/
       function b(){
          this.init=function(){func1();}; //这里可以调用到func1,原因在于对象体没有开辟作用域的概念,它自己依赖于自身所在的作用域,所以不能在对象体中直接找到func1.
          function func1(){
            alert(1);
          }

       }
       new b().init();//执行

  

  总结对象体没有开辟作用域的概念,它自己依赖于自身所在的作用域,所以不能在对象体中直接找到func1,需要通过作用域中的自己来找到func1,方法体则会在定义时开辟一段作用域(执行上下文),以供方便获取活动对象。
时间: 2024-10-12 01:19:37

解析对象体内与方法体内引用内部方法的不同的相关文章

访问修饰限定符的简单总结、final/abstruct/interface对类的限制、自动加载机制、序列化与反序列化【数据持久化和对象的序列化问题】、对象的拷贝(按引用是因为对象标识)和克隆(__clone方法中的this指向)

1.针对访问修饰限定符的理解只需要两点:(1)针对的是类的概念和访问代码的位置来确定是否能够访问(2)对访问修饰限定符的使用时只需要对该成员的使用场景注意即可[也就是内部,继承类,外部进行访问的权限] 不需要对内部进行太多理解[需要对php底层理解时进行理解] [重点][用途]通过访问修饰限定符将内部成员的权限合理的限制,然后再使用公共接口来调用这个基本服务,保证外部不能访问其内部的构件[这样既能够通过类内的设置,将内部的功能实现更好的限制,只有最外层的接口可以正常被访问到,而不了解内部的业务]

将对象转为数组方法:延伸array_map函数在PHP类中调用内部方法

public static function objectToArray($d) { if (is_object($d)) { $d = get_object_vars($d); } if (is_array($d)) { return array_map(array(__CLASS__, __FUNCTION__), $d); } else { return $d; } } array_map(array(__CLASS__, __FUNCTION__), $d)解释: 我们可以在PHP手册中

spring aop之对象内部方法间的嵌套失效

spring aop之对象内部方法间的嵌套失效 先看一下spring 代理原理: *       spring代理嵌套方法调用不生效 * *       Spring AOP defaults to using standard JDK dynamic proxies for AOP *       proxies. This enables any interface (or set of interfaces) to be *       proxied. * *       Spring

对象间引用赋值及方法时引用传递

考虑下面代码: class Program { static void Main(string[] args) { C c1 = new C(); c1.str = "hello"; C c2 = new C(); c2 = c1; //对象名即是对象引用,对象间赋值即是引用复制赋值,此时栈区的c2和c1同时指向堆区的同一块内存区域 Console.WriteLine(c1.str); Console.WriteLine(c2.str); c2.str = "world&qu

JavaScript中的this所引用的对象和如何改变这个引用

this是函数内部的一个特殊对象,它引用的是函数执行环境对象.也就是运行是基于函数的执行环境绑定. 1.在网页全局作用域中调用函数时,this引用window var color='black'; function saycolor(){ console.log(this.color); } saycolor();//'black' 第5行函数saycolor在全局作用域调用时this引用的是全局对象window,所以this.color的值就是window.color的值. 2.作为某个对象的

对象的私有/公有/静态/特权 属性/方法

私有/公有的属性/方法 [私有属性]:在对象内部使用'var'关键字来声明,而且它只能被私有函数和特权方法访问. [公共属性]:通过this.variableName来定义而且在对象外部是可以读写的.不能被私有函数所调用,它能被特权方法调用(包括对象的构造方法)和私有方法调用,私有函数只能访问私有的方法和属性. [私有方法]:在对象的构造函数里声明(或者是通过var functionName=function(){...}来定义). [公共方法]:通过ClassName.prototype.me

EntityFramework Model有外键时,Json提示循环引用 解决方法

正文之前先说两句,距离上篇博客已将近两个月,这方面的学习和探索并没有停止,而是前进道路上遇上了各种各样的问题,需要不断的整理.反思和优化,这段时间的成果,将在最近陆续整理发出来. 个人感觉国内心态太浮躁了,很少有能深入研究下去并将自己经验分享的人,可能很忙,也可能嫌麻烦.特别是面向新技术,尤其是在学习资料有限的情况下,愿意花费时间摸索和分享的人实在太少太少,遇到问题,搜索结果一抓一大把,但是往往都是转载,连最起码的自己验证都没有,结果就是以讹传讹,不仅对解决问题无用,反而容易产生误导.最近这段时

JavaScript基础对象创建模式之私有属性和方法(024)

JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is publ

Android数据格式解析对象JSON用法

1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java.比XML更轻量级,Json使用起来比较轻便和简单.JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便. 2.环境配置 http://code.google.com/p/googl