js和php中的作用域链的理解
来源:互联网 发布:java log4j maven 编辑:程序博客网 时间:2024/05/17 04:12
其实很早就阅读过javascript权威指南,只是当时还是实习,读的似懂非懂的,现在在这里温故知新作用域链的知识
object(Demo)#1 (2) { ["name"]=> NULL ["age"]=> int(0)}#看到这一段php中用var_dump打印出来的对象结构了吗,对的,其实这就是一个树形结构,js中的作用域也是这种链子的结构;所以每次函数调用的时候函数内部变量的作用域链都是不一样的
function counter() { var n = 0; return { count: function() { return n++; }, reset: function() { n = 0; } } } var c = counter(), d = counter(); console.log(c.count());//0 console.log(d.count());//0 //console.log(c.reset()); console.log(c.count());//1 console.log(d.count());//1 console.log(c.count());//2 console.log(d.count());//2 #对象的属性在函数执行完之后并没有释放,所以在下一次调用的时候还累加了,相当于实现了私有的静态变量。这样来实现,其实也是js的苦啊。回头想想jquery整个就是一个闭包的设计
再来看看阮一峰举得几个例子var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } };alert(object.getNameFunc()()); //The Windowvar name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ var that = this; return function(){ return that.name; }; } };alert(object.getNameFunc()());//My Object #需要注意的是this永远指向实例的应用,所以要看看确定this获取到的那个值得时候,应该看看实例是在什么作用域中执行的
#下面是一段php代码,在php中可以使用闭包来实现匿名函数啦 class Cart { const PRICE_BUTTER = 1.00; const PRICE_MILK = 3.00; const PRICE_EGGS = 6.95; protected $products = array(); public function add($product, $quantity) { $this->products[$product] = $quantity; } public function getQuantity($product) { return isset($this->products[$product]) ? $this->products[$product] : FALSE; } public function getTotal($tax) { $total = 0.00; $callback = function($quantity, $product) use ($tax, &total) { $pricePeritem = constant(__CLASS__ . "::PRICE_" . strtoupper($product)); $total += ($pricePeritem * $quantity) * ($tax + 1.0); } array_walk($this->products, $callback); return round($total, 2); }}
0 0
- js和php中的作用域链的理解
- js作用域链和闭包的理解
- 理解Js作用域和作用域链
- js的作用域链理解
- 理解 js的作用域
- javascript中的【变量作用域】和【作用域链】以及【闭包】的理解
- 关于js中的作用域和作用域链以及常见的问题和结果方法
- 深入理解JS中的变量作用域
- 深入理解JS中的变量作用域
- 深入理解JS中的变量作用域
- 深入理解JS中的变量作用域
- 深入理解JS中的变量作用域
- [js点滴]JavaScript中的作用域及作用域链的意义和解释
- 理解js作用域原型链和执行上下文
- JavaScript 作用域和作用域链的一些理解
- 理解JavaScript中的作用域和上下文
- 理解JavaScript中的作用域和上下文
- 理解JavaScript中的作用域和上下文
- Adb connection Error:远程主机强迫关闭了一个现有的连接
- 远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
- 构建自己的AngularJS - 作用域和Digest(三)
- 在普通类中获取request和session
- 实施微服务需要哪些基础框架|技术热点
- js和php中的作用域链的理解
- [Java开发之路](24)内部类
- Libgdx之监听用户输入
- uva116
- C++ map
- 程序员的出路之一
- spring框架中多数据源创建加载并且实现动态切换的配置实例代码
- 数据结构与算法之反转链表
- Linux下常用文件操作命令总结