可能重复:
JavaScript属性访问:点符号与括号?
我现在正在阅读一些开源的javascript项目代码,我发现他们有时会访问对象属性,person.name但有时他们会访问person['name'].
对我来说,点符号与其他符号相当清楚.点符号很容易写和读,但在源代码中我看到它们有时使用点符号有时[]括号符号,我试图理解它的原因是什么.
可能是什么原因?
可能的重复:
JavaScript 属性访问:点符号与括号?
我是 chrome 扩展的新手。我知道 Java,但 Javascript 是完全不同的东西。
我想问一下localStorage["something"]和 和有localStorage.something什么不一样?
方括号与点。
我希望for循环打印出所有的文本框值,它不会这样思考,我该怎么办呢?
<script>
current = x;
for (var i = 0; i < current; i++) {
var num = document.calculator.textbox + i + .value;
document.write("<br>" + num);
}
</script>
<form name="calculator">
<input type="text" name="textbox1">
<input type="text" name="textbox2">
<input type="text" name="textbox3">
<input type="text" name="textbox4">
<input type="text" name="textbox5">
<!--...... infinite amount of textboxes-->
</form>
Run Code Online (Sandbox Code Playgroud) 这两项任务之间有什么区别(如果有的话):
var foo = {};
foo['bar'] = "some value";
foo.baz = "some other value";
console.log(foo.bar)
=> "some value"
console.log(foo.baz)
=> "some other value"
Run Code Online (Sandbox Code Playgroud)
他们是同义词吗?我注意到你可以使用[]语法添加不是有效属性名称的键.
foo['a space'] = "does not work";
console.log(foo.a space);
=> SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)
我的理由是我为伪命名空间编写了一个小JS库.它的编写假设上述赋值是相同的(忽略使用[]语法时允许的超集)
为什么先工作而不是后者?*它只有一个小的区别,在后一种情况下,我使用速记来访问猫对象属性.我读到如果"属性的名称将是一个有效的变量名称 - 当它没有任何空格或符号并且不以数字字符开头时"它应该没有任何区别.
//this works
var cats = {Spot:true};
function addCat (name) { cats[name] = true; }
addCat("white");
console.log ("white" in cats); //true
console.log (cats.white); //true
Run Code Online (Sandbox Code Playgroud)
//this doesn't work
var cats = {Spot:true};
function addCat (name) { cats.name = true; }
addCat("white");
console.log ("white" in cats); //false
console.log (cats.white); //undefined
Run Code Online (Sandbox Code Playgroud) 我想将键值对发送到我的php页面,但我需要从数据标签中动态设置键值.
这是我到目前为止的代码:
function send(){
var attr = new Array();
var key = $('#add').attr('data-key');
var value = $('#add').attr('data-value');
attr.push({ key : value });
var data = {attributes: attr};
$.ajax({
url: "ajax.php",
type: "POST",
data: data,
success: function(result) {
alert(result)
}
});
}
Run Code Online (Sandbox Code Playgroud)
这不是实际代码,它只是基本功能.
问题出在这里:
attr.push({ key : value });
Run Code Online (Sandbox Code Playgroud)
'key'不是我设置的变量.
我能帮忙吗?我真的很感激.非常感谢你!
我正在学习javascript,并遇到了一些类似于以下代码的Javascript代码。似乎carArrays仅通过将数组分配给即可将对象变成地图carArrays[car1.year]。因此,我对此代码有很多疑问。
哪些JavaScript规则允许您执行此操作?
我以为[]是阵列。如果carArrays现在是地图,为什么使用方括号将其索引?
关于carArrays成为地图,我的解释正确吗?还是仍将其视为具有键“ 1999”和“ 2005”的对象?
我的代码:
function car( make, model, year){
this.make = make;
this.model = model;
this.year = year;
}
let car1 = new car('bmw', '3series', 1999);
let car2 = new car('ford', 'crownvic', 1999);
let car3 = new car('honda', 'accord', 1999);
let car4 = new car('bentley', '5', 2005);
let car5 = new car('chevy', 'silverado', 2005);
let car6 = new car('toyota', 'rav4', 2005);
let carArrays = {};
carArrays[car1.year] = [car1, car2, car3];
carArrays[car4.year] …Run Code Online (Sandbox Code Playgroud) 为什么不能用点表示法访问数组元素?
var arr = ['Apple', 'Mango', 'Pineapple', 'Orange', {name: 'Banana', color: 'yellow'}];
console.log( arr[0] ); // "Apple"
console.log( arr.0 ); // "Apple"
console.log( arr.3 ); // "Orange"
console.log( arr[4].name ); // "Banana"
console.log( arr.4.color ); // "Color"
Run Code Online (Sandbox Code Playgroud)
换句话说,为什么语言设计师选择禁止以数字开头的标识符?
我试图理解点和方括号表示法之间的区别。在查看 SO 和其他一些网站上的各种示例时,我遇到了这两个简单的示例:
var obj = { "abc" : "hello" };
var x = "abc";
var y = obj[x];
console.log(y); //output - helloRun Code Online (Sandbox Code Playgroud)
var user = {
name: "John Doe",
age: 30
};
var key = prompt("Enter the property to modify","name or age");
var value = prompt("Enter new value for " + key);
user[key] = value;
alert("New " + key + ": " + user[key]);Run Code Online (Sandbox Code Playgroud)
obj[x]如果在第三行中我将 替换为,第一个示例将返回 y 为未定义obj.x。为什么不"hello"
但在第二个示例中,表达式user[key]可以简单地替换为,user.key而不会出现任何异常行为(至少对我来说)。现在这让我很困惑,因为我最近了解到,如果我们想通过存储在变量中的名称访问属性,我们可以使用 [ ] …
我有这种对象
我想使用具有“ exist === true”键的新对象
const someObj = {
super: {
exist: true
},
photo: {
exist: true
},
request: {
exist: false
}
}
const newObj = Object.entries(someObj).reduce((newObj, [key, val]) => {
if (this.key.exist) { // how to check "exist" is true ?
return { ...newObj, [key]: val }
}
}, {}))
console.log(newObj);Run Code Online (Sandbox Code Playgroud)