Testing in Chrome 31.0.1650.63 32-bit on Windows Server 2008 R2 / 7 64-bit
Test Ops/sec
Object.defineProperty

for (var i = 0; i < 1000; i++) { obj = {};
Object.defineProperty(obj, "x", {
 get: funct['get'],
 set: funct['set']
})  obj.x = i;
 acc += obj.x;
}
ready
__defineGetter__
for (var i = 0; i < 1000; i++) {
obj = {};
obj.__defineGetter__('x', funct['get']);
obj.__defineSetter__('x', funct['set']);  obj.x = i;
 acc += obj.x;
}
ready
Normal
for (var i = 0; i < 1000; i++) {
obj = {};
 obj._x = i;
 acc += obj._x;
}
ready
Prototype
for (var i = 0; i < 1000; i++) {
obj = {};
obj.prototype = {
 get x() {
  return this._x;
 }, set x(value) {
  this_x = value;
 }
}  obj.x = i;
 acc += obj.x;
}
ready
Setter
for (var i = 0; i < 1000; i++) {
obj = {};
obj.setX = function(value) {
 this._x = value;
}  obj.setX(i);
 acc += obj._x;
}
ready
defineProperty with local funcs
for (var i = 0; i < 1000; i++) {
obj = {};
Object.defineProperty(obj, "x", {
 get: function() { return this._x; },
 set: function(v) { this._x = v; },
 configurable: true
})  obj.x = i;
 acc += obj.x;
}
ready

http://jsperf.com/object-defineproperty-vs-definegetter-vs-normal/49

Object.defineProperty vs __defineGetter__ vs normal的更多相关文章

  1. Object.defineProperty

    属性类型ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在Ja ...

  2. 关于Object.defineProperty 的基础知识

    Object.defineProperty 这个方法大家耳熟能详,可以对 对象的属性进行添加或修改的操作.即可以进行  数据劫持 .vue就是通过这个方法来劫持数据的. 平时我们创建对象的时候,一般通 ...

  3. javascript之Object.defineProperty的奥妙

    直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...

  4. Object.defineproperty实现数据和视图的联动

    Object.defineproperty语法 var o = {}; // 创建一个新对象 // Example of an object property added with definePro ...

  5. Vue 双向数据绑定原理分析 以及 Object.defineproperty语法

    第三方精简版实现 https://github.com/luobotang/simply-vue Object.defineProperty 学习,打开控制台分别输入以下内容调试结果 userInfo ...

  6. Object.defineproperty实现数据和视图的联动 ------是不是就是 Angular 模型和视图的同步的实现方式???

    参考:http://www.cnblogs.com/oceanxing/p/3938443.html https://developer.mozilla.org/zh-CN/docs/Web/Java ...

  7. 20+行代码使用es5 Object.defineProperty 实现简单的watch功能

    /** * 一个简单的demo 帮助理解defineProperty,只对Object类型参数有效 */ $watch=function(myObject,callback){ function in ...

  8. Object.defineProperty()方法的用法详解

    Object.defineProperty()函数是给对象设置属性的. Object.defineProperty(object, propertyname, descriptor); 一共有三个参数 ...

  9. 理解Object.defineProperty()

    理解Object.defineProperty() Object.defineProperty() 方法直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 基本语法:Obj ...

随机推荐

  1. UDP编程(八)

    此为网络编程系列的目录,后续会把内容补上.......

  2. 学习面试题Day02

    1.Java的引用和C++的指针有什么区别? 1.类型:引用其值为地址的数据元素,Java封装了的地址,可以转成字符串查看,长度可以不必关心.C++指针是一个装地址的变量,长度一般是计算机字长,可以认 ...

  3. (转载)static全局变量与普通的全局变量有什么区别?

    (转载)http://www.cnblogs.com/StudyRush/archive/2010/09/25/1834922.html 全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...

  4. adaboost学习资料收集

    很通俗易懂的一篇博文 http://blog.csdn.net/haidao2009/article/details/7514787 百度搜索研发部的一篇文章 http://stblog.baidu- ...

  5. Linux下配置Mysql允许远程访问

    操作非常简单,就5步骤,如下: 1.进入 mysql: ? 1 /usr/local/mysql/bin/mysql -u root -p 2.使用 mysql库 : ? 1 use mysql; 3 ...

  6. 自己安装的几个Eclipse插件

    http://eclipsenotepad.sourceforge.net This plugin has the simple objective to let developers write s ...

  7. 【转载】如何在C语言中调用shell命令

    转载自:http://blog.csdn.net/chdhust/article/details/7951576 如何在C语言中调用shell命令 在linux操作系统中,很多shell命令使用起来非 ...

  8. HW5.33

    import java.util.Calendar; public class Solution { public static void main(String[] args) { long tot ...

  9. Linux shell 常用

    使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并 ...

  10. define定义方法

    define('a',function(){ ; return x; }); define('b',['a'],function(a){ ; return y+a; }); M.use(['b'],f ...