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 为未知对象的基础上,尽可能写出更加完善的代码。
// 最终,如果不能完成该题,请尽可能的记录下来你思考的过程。
上面就是完整的题目。
借助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 获取调用属性的对象的更多相关文章
- JavaScript获取网页属性包括宽、高等
function getWindowInfo() {var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidt ...
- javascript 获取排列后的对象建值
function getSortedParameter (parameterObject){ let attributes = []; parameterObject = parameterObjec ...
- javascript 获取元素样式的方法
javascript 获取元素样式常用方法. Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式(<div s ...
- Javascript object.constructor属性与面向对象编程(oop)
定义和用法 在 JavaScript 中, constructor 属性返回对象的构造函数. 返回值是函数的引用,不是函数名: JavaScript 数组 constructor 属性返回 funct ...
- 转: JavaScript 获取对象属性和方法
一.获取对象属性和方法 Object.keys()for in 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返回的数组的所有属性(可枚举或不可枚举 ...
- JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;
JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...
- JavaScript 获取对象属性和方法
ShineJaie 原创整理,转载请注明出处. 一.获取对象属性和方法 Object.keys() 返回对象的可枚举属性和方法的名称数组. Object.getOwnPropertyNames() 返 ...
- COM动态添加删除成员,类似JavaScript中调用的对象
在JavaScript中调用对象时,可动态添加删除成员如: var obj=new Object; obj.member1='aaaaa'; obj.fun1=function() { alert(' ...
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
随机推荐
- 在linux下读取bmp文件头的完整代码。
呵呵,贴在这里记录一下. [cpp] view plaincopy #include<stdio.h> #include<string.h> #include<sys/t ...
- Qt部件--烧肉
1,QSplitter
- AndroidUI 布局动画-为列表添加布局动画效果
新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...
- setObject与setValue的区别
在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有.1.先看看setVa ...
- LCD与ARM,具体
一 实验内容简要描写叙述 1.实验目的 学会驱动程序的编写方法,配置S3C2410的LCD驱动,以及在LCD屏上显示包含bmp和jpeg两种格式的图片 2.实验内容 (1)分析S3c2410实验箱 ...
- Love Hotels and Unicode[转]
原文地址:http://www.reigndesign.com/blog/love-hotels-and-unicode/ 讲得挺通俗的一篇文章 On Sunday 28 October I atte ...
- mongodb 2.6.6 在window10下的安装
首先感谢波仔的知道,其次感叹下WIN10的牛叉,兼容性还不错. 首先,下载mongodb 2.6.6 安装包,可惜,官网太慢,还得注册.不过还好,我是个好人:http://pan.baidu.com/ ...
- 后台程序控制js弹出框
public void jsWindow(String msg, int i){ HttpServletResponse response=ServletActionContext.getRespon ...
- 介绍Foundation框架
开始介绍Foundation框架.OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部有很多现有的类和功能提供给我 ...
- QF——OC中的SEL类型和Block
@selector(): 可以理解@selector()就是取类方法的编号,他的基本行为类似于C语言中的函数指针(指向函数的指针).它们通过传递方法的地址(或编号)来实现把方法当做参数的效果. 不过在 ...