码迷,mamicode.com
首页 > 编程语言 > 详细

javascript 获取调用属性的对象

时间:2015-06-17 00:30:43      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

最近碰到一个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>      

 

javascript 获取调用属性的对象

标签:

原文地址:http://www.cnblogs.com/qiwubg/p/4582162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!