我正在检查是否存在一个对象属性,其中包含一个保存有问题的属性名称的变量.
var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";
if(myObj.myProp){
alert("yes, i have that property");
};
Run Code Online (Sandbox Code Playgroud)
这是undefined因为它正在寻找,myObj.myProp但我希望它来检查myObj.prop
eval函数是一种动态生成代码的强大而简单的方法,那么有什么警告呢?
除了显而易见的事实,即第一种形式可以使用变量而不仅仅是字符串文字,是否有任何理由使用其中一种,如果是这样,在哪种情况下呢?
在代码中:
// Given:
var foo = {'bar': 'baz'};
// Then
var x = foo['bar'];
// vs.
var x = foo.bar;
Run Code Online (Sandbox Code Playgroud)
上下文:我编写了一个生成这些表达式的代码生成器,我想知道哪个更好.
如果我有一个如下所示的javascript对象
var columns = {
left: true,
center : false,
right : false
}
Run Code Online (Sandbox Code Playgroud)
我有一个传递对象的函数,以及一个像这样的属性名称
//should return false
var side = read_prop(columns, 'right');
Run Code Online (Sandbox Code Playgroud)
身体read_prop(object, property)会是什么样的?
在PHP中你可以做这样惊人/可怕的事情:
$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1
Run Code Online (Sandbox Code Playgroud)
有没有办法用Javascript做这样的事情?
例如,如果我有一个var name = 'the name of the variable';可以获得名称变量的引用name?
我使用jQuery从DOM中提取项目,并希望使用idDOM元素在对象上设置属性.
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
Run Code Online (Sandbox Code Playgroud)
如果itemsFromDom包含一个带有id"myId" 的元素,我想要obj一个名为"myId"的属性.以上给了我name.
如何使用JavaScript使用变量命名对象的属性?
如果我理解正确,Javascript中的每个对象都继承自Object原型,这意味着Javascript中的每个对象都可以通过其原型链访问hasOwnProperty函数.
在阅读require.js的源代码时,我偶然发现了这个函数:
function hasProp(obj, prop) {
return hasOwn.call(obj, prop);
}
Run Code Online (Sandbox Code Playgroud)
hasOwn是一个参考Object.prototype.hasOwnProperty.写这个函数是否有任何实际的区别
function hasProp(obj, prop) {
return obj.hasOwnProperty(prop);
}
Run Code Online (Sandbox Code Playgroud)
既然我们在这,我们为什么要定义这个功能呢?这只是一个快捷方式和本地缓存属性访问(轻微)性能提升的问题,还是我错过了任何可能在没有此方法的对象上使用hasOwnProperty的情况?
代码:
function updateDashboardData() {
$.getJSON("includes/system/ajaxDataInterface.php", {recordcount:1}, function(data) {
$('.stationContainer').each(function(data) {
var bsID = $(this).attr("id");
var bsStatus = $(this).children('.stationStatus');
alert(data[bsID][0].time);
bsStatus.find('.bs_maxHandsets').text(data[bsID][0].maxHandsets);
bsStatus.find('.bs_time').text(data[bsID][0].time);
});
});
}
Run Code Online (Sandbox Code Playgroud)
对象数据:
{
"A5A50000": [{
"bsid": "A5A50000",
"chanCount": 17,
"time": "2009-05-27 16:36:45",
"avgInterference": 1.711765,
"maxInterference": 4.97,
"avgHandsets": 205.1176,
"maxHandsets": 315,
"avgCalls": 6.4118,
"maxCalls": 13,
"avgCBA": 3868.98059,
"maxCBA": 7463,
"sumSuccessCBA": 197318,
"sumTimeoutHandoff": 133,
"sumAttemptHandoff": 1028,
"sumDeniedHandoff": 216,
"sumConfirmHandoff": 679,
"sumHandoffNetwork": 61873,
"sumJoinNetwork": 96888,
"sumLeaveNetwork": 93754,
"sumRcvdKeepalive": 98773,
"sumTimeoutKeepalive": 19748,
"sumAttemptUplink": 93689,
"sumBlockedUplink": 62453
}]
}
Run Code Online (Sandbox Code Playgroud)
问题:
alert(data.A5A50000[0].time); 正确显示"2009-05-27 …
如何使用变量作为键来访问对象.这是我的代码示例:
var o = {"k1": "111", "k2": "222"};
alert(o.k1); //working fine
var key = "k"+1; alert(key); // k1
alert(o.key); //not working
Run Code Online (Sandbox Code Playgroud) 我想从数组列表中创建对象.我有一个动态的数组,假设看起来像这样:
var dynamicArray = ["2007", "2008", "2009", "2010"];
和一些javascript es6我想做一个像这样的对象:
const obj = {
2007: {
x: width / 5,
y: height / 2
},
2008: {
x: (2 / 5) * width,
y: height / 2
},
2009: {
x: (3 / 5) * width,
y: height / 2
},
2010: {
x: (4 / 5) * width,
y: height / 2
}
}
Run Code Online (Sandbox Code Playgroud)
不要担心内部对象,但只是想要这样的make结构:
obj = {
2007: ...,
2008: ...,
...
}
Run Code Online (Sandbox Code Playgroud)
请帮忙,谢谢.
javascript ×10
object ×3
syntax ×2
arrays ×1
ecmascript-6 ×1
eval ×1
jquery ×1
requirejs ×1
security ×1