我喜欢认为我理解JavaScript,但今天我发现了一些意想不到的东西,我希望有人可以向我解释它为什么会发生.
拿这个代码
var animalData = {
cow:"cow",
sheep:"sheep",
getCow:function()
{
return this.cow;
},
animalList:[
{
animalId:this.cow,
label:"This is a cow"
},
{
animalId:this.sheep,
label:"This is a sheep"
}
]
};
console.log(animalData.getCow());
console.log(JSON.stringify(animalData.animalList,null," "))
Run Code Online (Sandbox Code Playgroud)
输出不是我所期望的.按照您的预期调用animalData.getCow()结果"cow".但console.log这是让我感到困惑的第二个回报.
[
{
"label": "This is a cow"
},
{
"label": "This is a sheep"
}
]
Run Code Online (Sandbox Code Playgroud)
换句话说,该对象animalId完全从定义的对象中删除属性.我在期待这个
[
{
"animalId":"cow",
"label": "This is a cow"
},
{
"animalId":"sheep",
"label": "This is a sheep"
}
]
Run Code Online (Sandbox Code Playgroud)
我也许能理解这一点
[
{ …Run Code Online (Sandbox Code Playgroud) 给出Javascript中的字符串
{include} {花括号}中的任何内容,但不会像{this}那样进行转义,并且适用于{brace}的任何位置
我想要检索
我一直试图找到一种方法,但没有看后面我很难过.
最重要的是不要获取转义的{}内容.如果有必要的话,我可以选择包括比赛中的大括号的东西.
不幸的是,到目前为止我所做的只是一个这样的表达
(?:[^//]){.*?}
Run Code Online (Sandbox Code Playgroud)
但如果{位于目标文本的开头,则不匹配.
谁能帮我?谢谢.