无法从 javascript 中的对象获取属性,但在记录其父级时可以将其打印到控制台
Unable to get attribute from object in javascript but can print it to the console when logging its parent
从javascript中的对象获取属性,但我可以在记录其父级时将其打印到控制台。它确实看起来像一个普通的物体。为什么我无法访问_id?
下面的代码在一个函数中:在我的角度视图中提交表单时调用$scope.create = function() {
:<form class="form-horizontal" data-ng-submit="create()" novalidate>
所以问题来了,在我的函数中创建:
console.log($scope.account);
var tmp=$scope.account;
console.log('id:' +tmp._id);
给我:
{"user":{"displayName":"David Karlsson","_id":"548217e5402b8b8c194d9c11"},"_id":"5483235cc0d8580000152f0b","__v":0,"created":"2014-12-06T15:40:12.682Z","amount":0,"interests":[{"rate":123,"date":"2014-12-30T23:00:00.000Z","_id":"5483235cc0d8580000152f0c"}],"desc":"","name":"Acount"}
id:undefined
更改发布方法无济于事:
$scope.create = function() {
// Create new Income object
var copy = Object.assign({}, this.account);
console.log(copy);
}
给:
类型错误:未定义不是函数 at Scope.$scope.create (localhost:3000/modules/incomes/controllers/incomes.client.controller.js:12:29( at localhost:3000/lib/angular/angular.js:10880:21 回调时 (OCALHOST:3000/lib/Angular/Angular.js:19237:17( at Scope.$eval (localhost:3000/lib/angular/angular.js:12788:28( at Scope.$apply (localhost:3000/lib/angular/angular.js:12886:23( at HTMLFormElement.(本地主机:3000/lib/angular/angular.js:19242:23( at localhost:3000/lib/angular/angular.js:2853:10 at forEach (localhost:3000/lib/angular/angular.js:325:18( at HTMLFormElement.eventHandler (localhost:3000/lib/angular/angular.js:2852:5(
这是因为某些代码在调用 console.log
之后$scope.account
更改,但在显示对象之前。
例如:
var obj = {prop: {}};
console.log(obj.prop); // Produces {foo: "bar"}
var cached = obj.prop;
console.log(cached.foo); // Produces undefined
obj.prop.foo = 'bar';
缓存的值不会发生这种情况,因为它是字符串而不是对象。
要修复它,您可以使用 EcmaScript6 Object.assign
来"复制"您的对象:
var obj = {prop: {}};
console.log(Object.assign({}, obj.prop)); // Produces {}
var cached = obj.prop;
console.log(cached.foo); // Produces undefined
obj.prop.foo = 'bar';
- 按压“;输入“;将值打印到控制台日志
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 打印javascript控制台的堆栈跟踪
- 打印到控制台时为NaN,但typeof为数字jquery
- 为什么控制台.log(true,' ')打印真“ ”
- system.err风格的控制台以javascript打印
- 如何做if/else语句并使用控制台.log打印出来
- 谷歌浏览器控制台,打印图像
- Grails:多个加载ajax调用,但只有一个打印到控制台
- page.evaluate() 未打印控制台消息
- 它将打印控制台.log(1+ + “2”)
- Selenium NodeJS将cookie打印到控制台
- 使用javascript在HTML的输出窗口中打印控制台消息
- 如何将52个随机生成的数字打印到控制台
- jQuery显示函数打印到控制台
- 如何在控制台.log中打印 JSON 数据
- js 如何将对象名称打印到控制台
- 打印机.js未打印到控制台
- Javascript for循环控制台打印一行
- Chrome控制台:打印到新窗口中