标签: object-literal

为什么dict文字语法优于dict构造函数?

为什么Python dict构造函数比使用文字语法慢?

在与我的同事进行热烈讨论之后,我做了一些比较并获得了以下统计数据:

python2.7 -m timeit "d = dict(x=1, y=2, z=3)"
1000000 loops, best of 3: 0.47 usec per loop

python2.7 -m timeit "d = {'x': 1, 'y': 2, 'z': 3}"
10000000 loops, best of 3: 0.162 usec per loop
Run Code Online (Sandbox Code Playgroud)

构造函数变慢的原因是什么?在什么情况下,如果有的话,会更快吗?

python dictionary object-literal

25
推荐指数
1
解决办法
1万
查看次数

如何有效填充具有许多静态键/值对的Javascript对象文字?

创建Javascript对象的典型方法如下:

var map = new Object();
map[myKey1] = myObj1;
map[myKey2] = myObj2;
Run Code Online (Sandbox Code Playgroud)

我需要创建一个这样的映射,其中键和值都是字符串.我有一大堆但静态的对要添加到地图中.

有没有办法在Javascript中执行这样的操作:

var map =  { { "aaa", "rrr" }, { "bbb", "ppp" } ... };
Run Code Online (Sandbox Code Playgroud)

或者我必须为每个条目执行类似的操作:

map["aaa"]="rrr";
map["bbb"]="ppp";
...
Run Code Online (Sandbox Code Playgroud)

基本上,剩余的Javascript代码将遍历此映射并根据"运行时"已知的标准提取值.如果这个循环作业有更好的数据结构,我也很感兴趣.我的目标是尽量减少代码.

javascript object-literal static-initialization

24
推荐指数
3
解决办法
10万
查看次数

可以将对象文字内的多个属性设置为相同的值吗?

例如,我可以这样做吗?:

{ 
   a: b: c: d: 1,
   e: 2,
   geh: function() { alert("Hi!") }
}
Run Code Online (Sandbox Code Playgroud)

编辑:有什么方法可以避免这样做吗?:

{ 
   a: 1,
   b: 1,
   c: 1,
   d: 1,
   e: 2,
   geh: function() { alert("Hi!") }
}
Run Code Online (Sandbox Code Playgroud)

javascript properties object-literal

21
推荐指数
2
解决办法
2万
查看次数

用于快速查找和有序循环的Javascript数据结构?

Javascript中是否有数据结构或模式可用于快速查找(通过键,如关联数组)和有序循环?

是的,现在我使用对象文字存储我的数据,但我发现Chrome在循环遍历属性名称时没有维护顺序.

有没有一种常见的方法来解决这个问题?

谢谢你的任何提示.

javascript loops object-literal

20
推荐指数
1
解决办法
8510
查看次数

在javascript对象文字符号声明中调用函数

我正在尝试使用this关键字调用我创建的对象文字中的函数.但是错误显示说this.doTheMove()不是功能:

window.onload = function(){

  var animBtn = document.getElementById('startAnim');

  animBtn.addEventListener('click', Animation.init, false);

}

var Animation = {
  init: function(){

     this.doTheMove(); // I'm calling the function here, but it gives an error.

  },
  doTheMove: function(){

    alert('Animation!');

  }
}
Run Code Online (Sandbox Code Playgroud)

为什么会出错?

javascript object-literal

18
推荐指数
2
解决办法
1万
查看次数

如何确定对象是否是Javascript中的对象文字?

有没有办法在Javascript中确定对象是使用object-literal表示法还是使用构造函数方法创建的?

在我看来,你只是访问它的父对象,但如果你传入的对象没有引用它的父对象,我认为你不能告诉它,你呢?

javascript oop object-literal

17
推荐指数
4
解决办法
1万
查看次数

对象文字中的箭头功能

我想弄清楚为什么在对象文本的箭头函数被调用windowthis.有人可以给我一些见解吗?

var arrowObject = {
  name: 'arrowObject',
  printName: () => {
    console.log(this);
  }
};

// Prints: Window {external: Object, chrome: Object ...}
arrowObject.printName();
Run Code Online (Sandbox Code Playgroud)

一个按预期工作的对象:

var functionObject = {
  name: 'functionObject',
  printName: function() {
    console.log(this);
  }
};

// Prints: Object {name: "functionObject"}
functionObject.printName();
Run Code Online (Sandbox Code Playgroud)

根据巴贝尔REPL的说法,他们被描述为

var arrowObject = {
  name: 'arrowObject',
  printName: function printName() {
    console.log(undefined);
  }
};
Run Code Online (Sandbox Code Playgroud)

var functionObject = {
  name: 'functionObject',
  printName: function printName() {
    console.log(this);
  }
};
Run Code Online (Sandbox Code Playgroud)

为什么没有arrowObject.printName();arrowObject …

javascript object-literal ecmascript-6 babeljs arrow-functions

17
推荐指数
1
解决办法
1万
查看次数

使用不带引号的键安全地解析JSON字符串

json2.js严格要求所有对象键都是双引号.但是,在Javascript语法{"foo":"bar"}中相当于{foo:"bar"}.

我有一个textarea接受来自用户的JSON输入,并希望"轻松"双重引用键的限制.我已经看过json2.js如何在它出现之前的四个阶段验证JSON字符串.我能够添加第5个阶段以允许不带引号的密钥,并想知道这个逻辑是否存在任何安全隐患.

var data = '{name:"hello", age:"23"}';

// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
     .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
     .replace(/(?:^|:|,)(?:\s*\[)+/g, ":") // EDITED: allow key:[array] by replacing with safe char ":"
     /** everything up to this point is json2.js **/

     /** this is the 5th stage where it accepts unquoted keys **/         
     .replace(/\w+\s*\:/g, ":")) ) { // EDITED: allow any alphanumeric key

  console.log( (new Function("return " + …
Run Code Online (Sandbox Code Playgroud)

javascript json object-literal

16
推荐指数
2
解决办法
1万
查看次数

如何将私有变量添加到此Javascript对象文字片段?

在MDC找到了这个,但是我想如何添加一个私有变量

var dataset = {
    tables:{
        customers:{
            cols:[ /*here*/ ],
            rows:[ /*here*/ ]
        },
        orders:{
            cols:[ /*here*/ ],
            rows:[ /*here*/ ]
        }
    },
    relations:{
        0:{
            parent:'customers', 
            child:'orders', 
            keyparent:'custid', 
            keychild:'orderid',
            onetomany:true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Javascript中理解OOP的方式,如果存在这样的项目,我可以访问dataset.tables.customers.cols [0].
但是,如果我想将私有变量放入客户,那会是什么样子?在运行时错误中
添加var index = 0;结果.

javascript object-literal

15
推荐指数
2
解决办法
1万
查看次数

对象文字中的引用变量?

说我有

myfunc({
  var1: 1,
  var2: 2,
})
Run Code Online (Sandbox Code Playgroud)

如果我想拥有一个使用当前未命名对象的值,我该怎么做?

如果我想要的话

myfunc({
  var1: 1,
  var2: 2,
  var3: this.var1 + this.var2
})
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.

正确的语法是什么?

javascript object-literal

14
推荐指数
2
解决办法
8993
查看次数