zoukankan      html  css  js  c++  java
  • javascript 获取调用属性的对象

    最近碰到一个javascript 的小问题,是和闭包有关的,来自cnode 论坛,很有意思。

        var o = (function() {
            var person = {
                name: 'Vincent',
                age: 24
            };
            return {
                run: function(k) {
                    return person[k];
                }
            }
        })();
    
        // TODO 在不改变上面代码的基础上,并且在只知道 person 是一个对象的基础上
        // 只能在本段注释后面继续写代码,最终通过 o 打印出 person ,对于上文中的 person 即 `Object {name: "Vincent", age: 24}`
        // 例如 o.someThing = 1; cosnole.log(o.run('someThing'));
        // 在考虑到 person 为未知对象的基础上,尽可能写出更加完善的代码。
        // 最终,如果不能完成该题,请尽可能的记录下来你思考的过程。
    View Code

    上面就是完整的题目。

    借助object.prototype.__defineGetter__()可以实现这个功能。

      Object.prototype.__defineGetter__("getClosureVariable", function(){       
          return this;//可以返回调用这个属性的对象                                           
      });                                                                       
      var person = o.run("getClosureVariable");                                 
      console.log(person);                                                      

    __defineGetter__()的其它应用,例如,获取一个文档元素的tagname

        HTMLElement.prototype.__defineGetter__("myTagName",function(){    
            return this.tagName;                                          
        })                                                                
          console.log(document.getElementById("mySpan").myTagName);       
    <span id="mySpan"></span>      
  • 相关阅读:
    Hibernate映射Map属性2
    Ajax向Controller发送请求并接受数据需要注意的一个细节
    设置 jsp 表格相邻两行的颜色不一样
    Hibernate映射Map属性
    自己写的爬虫
    在一个jsp页面中引用另一个jsp文件的路径的问题
    state设计原则
    项目图标库怎样选择
    一些有用的插件
    Hook
  • 原文地址:https://www.cnblogs.com/bg57/p/4582162.html
Copyright © 2011-2022 走看看