javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

spring-mvc

reflection

javascript-objects

html5

analytics

node.js

performance

branch-prediction

git-commit

git-revert

javascript-重新使用保留字作为属性名称

保留字可以用作对象的属性名称吗?

先前的堆栈溢出问题(在浏览器中支持使用保留字作为JavaScript中的属性名称)间接提出了此问题。 答案似乎是Alex Wayne的普遍共识:

您可以使用这些单词,但只能用作字符串,不能用作速记 属性。

<input name='typeof' value='scalar' />

虽然我认为他们在这方面可能比我更了解知识,并且在某些情况下使用保留字可能是一个坏主意,但基于两点,我认为他们的结论是错误的:

  • 使用保留字作为“速记”属性进行测试

  • HTMLFormElement使得不可能不使用“简写”中的保留字

首先,使用保留字列表,将每个属性作为属性添加到<input name='typeof' value='scalar' />form.typeof,分别作为obj["word"]和2989534739939926877187,然后作为obj["word"]obj.word进行检索。在这63个案例中,所有八个测试均正常工作。

其次,HTMLFormElement必须进行这项工作,因为它使用简写表示法检索其元素。 如果<input name='typeof' value='scalar' />是形式元素,则form.typeof ==“标量”。

根据我的经验,保留字通常是数据造成的(例如,名为“ private”的列),而不是程序造成的。 这样,它们会污染JSON对象,并从那里污染输入,并从那里污染HTMLFormElement。 简而言之,如果没有大量的(恕我直言,不必要的)工作,就不可能使保留字不被迫以速记方式正常工作。

在我看来,这些实际问题是:

  • 需要注意不要与现有属性冲突,不要与保留字冲突

  • (如果不是全部,则很多)变量不能为保留字

  • 使用保留字作为属性可能(但不一定)令人困惑

那么这个结论是正确的吗?只要保留一些常识,保留字作为属性名称,并以字符串或速记形式访问它们就好了吗?

trans by 2020-07-30T16:52:00Z

jQuery-展平一个JavaScript对象以作为querystring传递

我有一个JavaScript对象,我需要将其展平为一个字符串,以便可以作为querystring传递,我该怎么做? 即:

{ cost: 12345, insertBy: 'testUser' }将成为data

我不能为此调用使用jQuery AJAX调用,我知道我们可以使用该对象并将对象传递为data,但在这种情况下不可以。 不过,使用jQuery展平到对象可以。

谢谢。

trans by 2019-12-23T19:33:02Z

JavaScript关联数组的长度

我有一个js关联数组(或者有些人可能更喜欢将其称为对象),例如

var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";

是否有任何内置函数可以获取此数组的长度,或者jQuery或其他库中的任何解决方案? 目前,大多数人都必须知道,quesArr.length的值为0。

请不要建议像这个问题中提到的那样遍历整个数组/对象,因为我拥有的数组/对象非常大。

有什么办法可以继续进行吗?

trans by 2019-10-27T23:35:10Z

JavaScript,检查null / undefined的嵌套对象属性的优雅方法

这个问题在这里已有答案:

  • 测试是否存在嵌套的JavaScript对象键                                     50个答案

我偶尔会遇到的一个“问题”是我有一个对象,例如: user.loc.lat并通过使用该应用程序的过程填充。 让我们说一下,在AJAX调用之后或者我这样做的事情:

user.loc = {
    lat: 50,
    long: 9
}

在另一个地方,我想检查user.loc.lat是否存在。

if (user.loc.lat) {
    // do something
}

如果它不存在,这将导致错误。 如果if(user.loc.lat)false,user.loc当然是undefined也是如此。

"Cannot read property 'lat' of null" - Dev Tools error

这意味着我需要像这样检查:

if (user.loc) {
    if (user.loc.lat) {
        // do something
    }
}

要么

if (user.loc && user.loc.lat) {
    // do something
}

这不是很漂亮,我的对象越大越好 - 显然(想象10级嵌套)。如果user.loc也是undefined,那么if(user.loc.lat)不仅仅会返回false

检查这种情况的理想方法是什么?

trans by 2019-09-17T06:40:06Z

javascript - 这种定义JS对象的方式有什么用途吗?

I'm maintaining some legacy code and I've noticed that the following pattern for defining objects is used:

var MyObject = {};

(function (root) {

    root.myFunction = function (foo) {
        //do something
    };

})(MyObject);

这有什么用途吗? 它只相当于做以下事情吗?

var MyObject = {

    myFunction : function (foo) {
        //do something
    };

};

I'm not about to embark in a holy quest to refactor the whole codebase to my likings, but I'd really like to understand the reason behind that roundabout way of defining objects.

谢谢!

trans by 2019-08-29T03:36:37Z

collections - javascript obj中的元素数

有没有办法从某个地方获取javascript对象中的元素数量? (即恒定时间复杂度)。

我找不到检索该信息的属性或方法。 到目前为止,我只能想到在整个集合中进行迭代,但这是线性时间。
奇怪的是,没有直接访问对象的大小,你不觉得。

编辑:
我在谈论Object对象(一般不是对象):

var obj = new Object ;
trans by 2019-08-23T18:46:03Z

将Javascript对象编码为Json字符串

我想将Javascript对象编码为JSON字符串,我遇到了相当大的困难。

对象看起来像这样

new_tweets[k]['tweet_id'] = 98745521;
new_tweets[k]['user_id'] = 54875;       
new_tweets[k]['data']['in_reply_to_screen_name'] = "other_user";
new_tweets[k]['data']['text'] = "tweet text";

我想把它变成一个JSON字符串,将它放入一个ajax请求中。

{'k':{'tweet_id':98745521,'user_id':54875, 'data':{...}}}

你得到了照片。 不管我做什么,它都行不通。 所有JSON编码器都像json2等产生

[]

嗯,这对我没有帮助。 基本上我想有像php encodejson这样的功能。

trans by 2019-08-02T07:37:09Z

JSON和JavaScript对象有什么区别?

这个问题在这里已有答案:

  • JSON和Object Literal Notation有什么区别?                                     8个答案

我是JSON和JavaScript对象的新手。

  • 有人可以解释一下JSON和JavaScript对象之间的区别吗?
  • 它们的用途是什么?
  • 这个比那个好吗? 还是取决于具体情况?
  • 何时使用哪一种,在什么情况下?
  • 为什么JSON首先创建? 它的主要目的是什么?
  • 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然?
trans by 2019-07-22T08:18:25Z

javascript - 为什么我可以将命名属性添加到数组中,就像它是一个对象一样?

以下两个不同的代码片段似乎与我相同:

var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";

var myObject = {'A': 'Athens', 'B':'Berlin'};

因为它们的行为都相同,而且typeof(myArray) == typeof(myObjects)(都产生'对象')。

这些变体之间有什么区别吗?

trans by 2019-07-20T07:09:45Z

javascript - 这是克隆ES6中对象的好方法吗?

谷歌搜索“javascript克隆对象”带来一些非常奇怪的结果,其中一些是绝望的过时,有些只是太复杂,不是那么容易:

let clone = {...original};

这有什么不对吗?

trans by 2019-07-14T14:26:23Z

javascript - ES6中的地图与对象,何时使用?

参考:MDN地图

当密钥未知时直到运行时和何时使用映射到对象上   所有键都是相同的类型,所有值都是相同的类型。

当存在对各个元素进行操作的逻辑时使用对象。

题:

在对象上使用地图的适用示例是什么? 特别是“什么时候直到运行时才能知道密钥?”

var myMap = new Map();

var keyObj = {},
    keyFunc = function () { return 'hey'},
    keyString = "a string";

// setting the values
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");

console.log(myMap.get(keyFunc));
trans by 2019-06-11T17:59:56Z

JavaScript,优雅的方法来检查NULL / undefined的嵌套对象属性

这个问题在这里已有答案:

  • 测试是否存在嵌套的JavaScript对象键                                     48个答案

我偶尔会遇到一个“问题”,就是我有一个对象,例如: if(user.loc.lat)并通过使用该应用程序的过程填充。 让我们说一下,在AJAX调用之后或者我这样做的事情:

user.loc = {
    lat: 50,
    long: 9
}

在另一个地方,我想检查if(user.loc.lat)是否存在。

if(user.loc.lat) {
    // do something
}

如果它不存在,这将导致错误。 如果if(user.loc.lat)false,user.loc当然也是undefined

"Cannot read property 'lat' of null" - Dev Tools error

这意味着我需要像这样检查:

if(user.loc) {
    if(user.loc.lat) {
        // do something
    }
}

要么

if(user.loc && user.loc.lat) {
    // do something
}

这不是很漂亮,我的对象越大越好 - 显然(想象10级嵌套)。如果if(user.loc.lat)if(user.loc.lat),那么if(user.loc.lat)不仅仅会返回false

检查这种情况的理想方法是什么?

trans by 2019-05-24T08:36:31Z

如何通过引用将JavaScript对象复制到新变量?

这个问题在这里已有答案:

  • 在JavaScript中深度克隆对象的最有效方法是什么?                                     64个答案

我在这里写了一个快速的jsfiddle,我将一个小json对象传递给一个新变量并修改原始变量(不是新变量)中的数据,但新变量的数据也会更新。 这必须意味着json对象是通过引用传递的,对吧?

这是我的快速代码:

var json_original = {one:'one', two:'two'}

var json_new = json_original;

console.log(json_original); //one, two
console.log(json_new); //one, two

json_original.one = 'two';
json_original.two = 'one';

console.log(json_original); //two, one
console.log(json_new); //two, one

有没有办法制作一个json对象的深层副本,以便修改原始变量不会修改新变量?

trans by 2019-05-07T08:40:21Z

jquery - 使用数字键将JavaScript对象转换为数组

我有一个像这样的对象作为来自服务器的JSON响应返回:

{"0":"1","1":"2","2":"3","3":"4"}

我想将它转换为像这样的JavaScript数组:

["1","2","3","4"]

有没有最好的方法来做到这一点? 无论我在哪里阅读,人们都在使用循环来使用复杂的逻辑。 那么有没有其他方法来做到这一点?

trans by 2019-03-29T17:51:27Z

javascript - 获取obj的第一个索引

考虑:

var object = {
  foo: {},
  bar: {},
  baz: {}
}

我该怎么做:

var first = object[0];
console.log(first);

显然,这不起作用,因为第一个索引名为foo,不是0

console.log(object['foo']);

有效,但我不知道它的名字是foo。 它可以被命名为任何东西。 我只想要第一个。

trans by 2019-03-13T06:35:51Z

循环 - 如何迭代JavaScript对象?

我在JavaScript中有一个对象:

{
    abc: '...',
    bca: '...',
    zzz: '...',
    xxx: '...',
    ccc: '...',
    // ...
}

我想使用for循环来获取其属性。 我想在部分中迭代它(不是一次所有的对象属性)。

使用简单的数组,我可以使用标准的for循环:

for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last

但是如何用物体做呢?

trans by 2019-02-13T23:31:47Z

数组 - 使用{}或新的Object()在JavaScript中创建一个空对象?

在JavaScript中创建空对象有两种不同的方法:

var objectA = {}
var objectB = new Object()

脚本引擎如何处理它们有什么不同吗? 有没有理由使用一个而不是另一个?

类似地,也可以使用不同的语法创建一个空数组:

var arrayA = []
var arrayB = new Array()
trans by 2019-01-30T21:33:39Z

javascript - 如何从异步回调函数返回值?

这个问题在这里已有答案:

  • 如何从异步调用返回响应?                                     31个答案

在SO中多次询问这个问题。 但我还是得不到东西。

我想从回调中获得一些价值。 请查看下面的脚本以获得说明。

function foo(address){

      // google map stuff
      geocoder.geocode( { 'address': address}, function(results, status) {
          results[0].geometry.location; // I want to return this value
      })

    }
    foo(); //result should be results[0].geometry.location; value

如果我试图返回该值只是“未定义”。 我跟着SO的一些想法,但是仍然失败。

那些是:

function foo(address){
    var returnvalue;    
    geocoder.geocode( { 'address': address}, function(results, status) {
        returnvalue = results[0].geometry.location; 
    })
    return returnvalue; 
}
foo(); //still undefined
trans by 2019-01-25T02:52:05Z

javascript - 从一个对象数组中,将属性的值提取为数组

我有JavaScript对象数组,具有以下结构:

objArray = [ { foo: 1, bar: 2}, { foo: 3, bar: 4}, { foo: 5, bar: 6} ];

我想提取一个包含键foo的值的数组,结果值为[ 1, 3, 5 ]

我用琐碎的方法完成了这个,如下:

function getFields(input, field) {
    var output = [];
    for (var i=0; i < input.length ; ++i)
        output.push(input[i][field]);
    return output;
}

var result = getFields(objArray, "foo"); // returns [ 1, 3, 5 ]

有没有更优雅和高效的方法来实现?


关于建议重复的注意事项,该问题询问如何将对象转换为数组,这个问题询问如何从对象数组中提取单个属性。

trans by 2019-01-23T03:08:11Z

如何获取Javascript对象的所有属性值(不知道密钥)?

如果有一个Javascript对象:

var objects={...};

假设,它有超过50个属性,不知道属性名称(不知道'键')如何在循环中获取每个属性值?

trans by 2019-01-23T02:18:19Z

1 2 下一页 共2页