六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 35|回复: 0

一道前端面试题----在javascript调试中,你是如何监测一个变量的变化的呢?

[复制链接]

升级  75.33%

140

主题

140

主题

140

主题

举人

Rank: 3Rank: 3

积分
426
 楼主| 发表于 2012-12-22 21:29:02 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">  这是今年百度公司暑期实习生招聘web前端开发工程师面试的面试官问本人的一道面试题。
  问题:javascript如何监控变量呢?
  答:__defineGetter__  和 __defineSetter__这两个方法每次get和set的时候都会执行。不过并不是所有浏览器都支持。在Firefox下,我们可以通过object.watch(prop, handler)来实现。而在IE下,可以通过Object.defineProperty来实现。具体代码如下:
<div class="cnblogs_code"> 1 /* 2 * object.watch polyfill 3 * 4 * 2012-04-03 5 * 6 * By Eli Grey, http://eligrey.com 7 * Public Domain. 8 * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. 9  */10 11 // object.watch12 if (!Object.prototype.watch) {13     Object.defineProperty(Object.prototype, "watch", {14           enumerable: false15         , configurable: true16         , writable: false17         , value: function (prop, handler) {18             var19               oldval = this[prop]20             , newval = oldval21             , getter = function () {22                 return newval;23             }24             , setter = function (val) {25                 oldval = newval;26                 return newval = handler.call(this, prop, oldval, val);27             }28             ;29 30             if (delete this[prop]) { // can't watch constants31                 Object.defineProperty(this, prop, {32                       get: getter33                     , set: setter34                     , enumerable: true35                     , configurable: true36                 });37             }38         }39     });40 }41 42 // object.unwatch43 if (!Object.prototype.unwatch) {44     Object.defineProperty(Object.prototype, "unwatch", {45           enumerable: false46         , configurable: true47         , writable: false48         , value: function (prop) {49             var val = this[prop];50             delete this[prop]; // remove accessors51             this[prop] = val;52         }53     });54 }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表