给定一个JS对象
var obj = { a: { b: '1', c: '2' } }
Run Code Online (Sandbox Code Playgroud)
和一个字符串
"a.b"
Run Code Online (Sandbox Code Playgroud)
如何将字符串转换为点符号,以便我可以去
var val = obj.a.b
Run Code Online (Sandbox Code Playgroud)
如果字符串只是'a'我可以使用,'a'但这更复杂.我想有一些简单的方法,但它目前逃脱了.
我目前使用Vue.JS 2.0,我想从一个自定义指令更新一个Vue实例的模型,但是我看起来很好的方法,这是因为我试图创建一个实现JQueryUI-Datepicker代码的自定义指令如下:
<input type="text" v-datepicker="app.date" readonly="readonly"/>
Vue.directive('datepicker', {
bind: function (el, binding) {
$(el).datepicker({
onSelect: function (date) {
//this is executed every time i choose an date from datepicker
//pop.app.date = date; //this work find but is not dynamic to parent and is very dirty
Vue.set(pop, binding.expression, date); //this should work but nop
}
});
},
update: function (el, binding) {
$(el).datepicker('setDate', binding.value);
}
});
var pop = new Vue({
el: '#popApp',
data: {
app: {
date: ''
}
} …Run Code Online (Sandbox Code Playgroud) 我有以下对象
var obj = {};
obj.foo = {};
obj.foo.bar = "I want this";
Run Code Online (Sandbox Code Playgroud)
如果将"path" "foo.bar"作为字符串,我该如何检索obj.foo.bar(或obj[foo][bar])?
说我有这样一个对象:
a : {
a1 : {
a2: true
}
}
Run Code Online (Sandbox Code Playgroud)
我将所有路径保存在一个数组中:
[a1, a2]
Run Code Online (Sandbox Code Playgroud)
如果我想为["a1"] ["a2"]赋值,很容易:
a["a1"]["a2"] = true;
Run Code Online (Sandbox Code Playgroud)
但是,当我有这样的3级路径时:
[a1, a2, a3]
Run Code Online (Sandbox Code Playgroud)
我必须像这样手动编写代码:
a["a1"]["a2"]["a3"] = true;
Run Code Online (Sandbox Code Playgroud)
有没有办法自动处理任何级别的路径,这样我就不必为每一个案例明确表达它?
请注意,"a"可能非常复杂,因此我只想为此特定元素赋值而不触及其余元素.
我在eval()上听到了很多不同的意见,并且有点不确定在这种情况下是否可以使用eval():
假设我有一个这样的对象:
var bla = {
blubb: function (callback) {
//GET some stuff via ajax
//call the callback
}
}
Run Code Online (Sandbox Code Playgroud)
和这样的字符串:
var someString = "bla.blubb";
Run Code Online (Sandbox Code Playgroud)
为了调用函数(和回调函数)来评估字符串是不是很邪恶?
var callMe = eval(someString)
callMe(function(){
alert('yay')!
});
Run Code Online (Sandbox Code Playgroud) 如果我有一个总是相同的基础对象:project但有时我必须动态访问它的字段,如果它可以是1个或多个嵌套对象,我该如何访问它的字段,例如:
function (myPath){
return project[myPath];
}
Run Code Online (Sandbox Code Playgroud)
这在使用project["oneField"]时有效myPath("oneField")
但是当它嵌套到更多级别时它不起作用:
myPath("one.two.fieldName") 不起作用: project["one.two.fieldName"]
不是这样的: project."one.two.fieldName"