我有一个对象,x.我想把它复制为对象y,这样改变y就不要修改了x.我意识到复制从内置JavaScript对象派生的对象将导致额外的,不需要的属性.这不是问题,因为我正在复制我自己的一个文字构造的对象.
如何正确克隆JavaScript对象?
在JavaScript中,我创建了一个像这样的对象:
var data = {
'PropertyA': 1,
'PropertyB': 2,
'PropertyC': 3
};
Run Code Online (Sandbox Code Playgroud)
如果在运行时之前未确定属性名称,是否可以在初始创建后为此对象添加更多属性?即
var propName = 'Property' + someUserInput
//imagine someUserInput was 'Z', how can I now add a 'PropertyZ' property to
//my object?
Run Code Online (Sandbox Code Playgroud) 当我尝试使用传播运算符有条件地合并两个对象时,当条件为true或时,它将起作用false:
let condition = false;
let obj1 = { key1: 'value1'}
let obj2 = {
key2: 'value2',
...(condition && obj1),
};
// obj2 = {key2: 'value2'};
Run Code Online (Sandbox Code Playgroud)
当我尝试对数组使用相同的逻辑时,它仅在条件为时才起作用true:
let condition = true;
let arr1 = ['value1'];
let arr2 = ['value2', ...(condition && arr1)];
// arr2 = ['value2', 'value1']
Run Code Online (Sandbox Code Playgroud)
如果条件为false错误,则抛出:
let condition = false;
let obj1 = { key1: 'value1'}
let obj2 = {
key2: 'value2',
...(condition && obj1),
};
// obj2 = {key2: …Run Code Online (Sandbox Code Playgroud)是否有一些基于条件设置属性的语法?
data: {
userId: 7,
actionId: 36,
express: (myCondition ? true : null) // does not work
}
Run Code Online (Sandbox Code Playgroud)
我想要express设置为一个值或根本不设置(即,应该没有命名的键express),并且在定义之后没有额外的语句.我知道我可以使用它作为布尔值,但接收方正在使用isset()支票,我想知道我是否可以避免修改它.
编辑:似乎没有直接解决问题的方法如上所述.以下是密切的建议:
JSON.stringify(Chris Kessel,dystroy):
var json = JSON.stringify( {
data: {
userId: 7,
actionId: 36,
express: (myCondition ? true : null)
}
});
Run Code Online (Sandbox Code Playgroud)
一个匿名函数(Paulpro):
var data = new function(){
this.userId = 7;
this.actionId = 36;
myCondition && (this.express = true);
};
Run Code Online (Sandbox Code Playgroud)
额外声明(x4rf41):
data: {
userId: 7,
actionId: 36
}
if(myCondition) data["express"] = …Run Code Online (Sandbox Code Playgroud) document.all 是DOM中的非基本对象,是虚假的.
例如,此代码不执行任何操作:
if (document.all) {
alert("hello");
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?
ES6/ES7 中已经有很多很酷的功能来定义Javascript对象.但是,以下模式在Javascript中很常见:
const obj = {
requiredKey1: ...,
requiredKey2: ...
};
if (someCondition) {
obj.optionalKey1 = ...;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用可选键和必需键同时定义对象?
给出如下卡片代码: 卡片
如何更新卡片样式或任何材质UI样式
const styles = theme => ({
card: {
minWidth: 275,
},
Run Code Online (Sandbox Code Playgroud)
如下:
const styles = theme => ({
card: {
minWidth: 275, backgroundColor: props.color },
Run Code Online (Sandbox Code Playgroud)
当我尝试最新的那个时,我得到了
Line 15: 'props' is not defined no-undef
Run Code Online (Sandbox Code Playgroud)
当我更新代码时:
const styles = theme => (props) => ({
card: {
minWidth: 275, backgroundColor: props.color },
Run Code Online (Sandbox Code Playgroud)
也
const styles = (theme ,props) => ({
card: {
minWidth: 275, backgroundColor: props.color },
Run Code Online (Sandbox Code Playgroud)
代替
const styles = theme => ({
card: {
minWidth: 275, backgroundColor: props.color …Run Code Online (Sandbox Code Playgroud) 我可以将{}与true或false或本身进行比较,但是与null或undefined的比较会产生语法错误.这是因为{}是一个对象值而不是一个引用?感觉很奇怪它会是一个语法错误而不是某种运行时类型错误,或者只是工作.
为了澄清,我很好奇为什么这是一个SyntaxError,大多数情况下做的{} == {}不仅仅是SyntaxError,而且根本没有错误.
使用Nuxt开发通用 JS 应用程序,我尝试配置webpack 的开发代理,以便仅在开发中请求/api代理到http://127.0.0.1:500/api到达 Python REST API 的位置。按照 Nuxt 文档,我扩展了 webpack 配置,如下nuxt.config.js所示:
build: {
extend (config, { isDev }) {
// Proxy /api to Python only in dev
if (isDev) {
const devServer = {
proxy: {
'/api': 'http://127.0.0.1:5000'
}
}
config.devServer = devServer;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我记录配置,我会看到正在应用更改:
...
devServer: { proxy: { '/api': 'http://127.0.0.1:5000' } } }
...
Run Code Online (Sandbox Code Playgroud)
然而,当我访问http://127.0.0.1:8080/api/things时,我的 Nuxt 应用程序被返回(它在开发中的端口 8080 上运行),表明 …
我正在尝试执行以下操作以满足代码生成器的要求(Sencha Cmd是特定的).
这就是我需要做的事情.关键因素是函数体必须以对象文字的返回结束.由于构建器的限制,我无法返回变量.因此,如果参数'includeB'为true,如何在伪代码点处添加属性'b',但如果为false,则不添加属性AT ALL.即b == undefined或b == null是不允许的.
也许这是不可能的.
function create(includeB) {
// Can have code here but the final thing MUST be a return of the literal.
// ...
return {
a : 1
// pseudo code:
// if (includeB==true) then create a property called b
// and assign a value of 2 to it.
// Must be done right here within this object literal
}
}
var obj = create(false);
// obj must have property 'a' ONLY
var …Run Code Online (Sandbox Code Playgroud) javascript ×8
ecmascript-6 ×2
clone ×1
dom ×1
ecmascript-7 ×1
material-ui ×1
nuxt-edge ×1
nuxt.js ×1
object ×1
reactjs ×1
webpack ×1