Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS中,这个默认属性和类型类似于对象的数据结构是什么?_Javascript_Node.js_Data Structures - Fatal编程技术网

Javascript 在JS中,这个默认属性和类型类似于对象的数据结构是什么?

Javascript 在JS中,这个默认属性和类型类似于对象的数据结构是什么?,javascript,node.js,data-structures,Javascript,Node.js,Data Structures,我注意到在一些JS对象中,它们的属性具有一些特殊的行为。例如,Sequelize中的模型对象,如果我将模型记录到控制台,我会看到该对象包含诸如\u data、\u changed、\u modelOptions等属性 但是,当访问对象本身时,\u data属性似乎是其默认属性。例如: const userModel = UserModel.findOne(...); console.log(userModel.email); // this prints the email field of

我注意到在一些JS对象中,它们的属性具有一些特殊的行为。例如,Sequelize中的模型对象,如果我将模型记录到控制台,我会看到该对象包含诸如
\u data
\u changed
\u modelOptions
等属性

但是,当访问对象本身时,
\u data
属性似乎是其默认属性。例如:

const userModel = UserModel.findOne(...);
console.log(userModel.email);   // this prints the email field of the record
console.log(userModel._data.dataValues.email)  // this also prints the email of the record
似乎我不必从
\u data.dataValues
访问
电子邮件。我可以直接从
userModel
对象访问它

当我打印整个对象时,我还注意到
\u data.dataValues
中的值被打印出来

为此:

console.log(JSON.stringify(userModel))
我将得到以下结果:

{
   name: 'John',
   email: 'john@smith.com'
}
但有了这一点:

console.log(userModel)
我会得到这个:

t {
   _data: user {   // what is that 'user'  before the object? is it a type definition?
      dataValues: {
         name: 'John',
         email: 'john@smith.com'
      }
      _previousDataValues: {
         name: 'John',
         email: 'john@smith.com'
      }
      _modelOptions: {
         ...
      }
      ...
   }
}
这看起来有点不同于通常的JS对象,因为它似乎对对象有一种“类型”排序,这些属性是“内部”的,打印出来时不可见

起初我以为它是一个类,但我试着打印我创建的一个类,并将输出与这个模型的控制台输出进行比较,它们看起来不同


我不经常在JS中看到这种数据结构。JS和Node中的数据结构是什么?与JS中的常规对象相比,这个“特殊”对象有什么不同和有用之处?

实现这些行为形式并不特别。这可以使用或轻松完成

这里有一个例子

职能人员(fName,lName){
这是一个数据={
fName:fName,
lName:lName
}
对象。定义属性(此{
fName:{
get:function(){
返回此。\u data.fName;
},
设置:函数(值){
这是。_data.fName=值;
}
},
名称:{
get:function(){
返回此。\u data.lName;
},
设置:函数(值){
这是。_data.lName=值;
}
}
});  
}
const ratul=新人(“ratul”、“sharker”);
控制台日志(ratul);
console.log(ratul.fName);
ratul.fName=“Ra2l”;

console.log(ratul.fName)
可能是对象是其实例的类的指示-例如,调用了一个
类用户
,并将结果分配给
\u data
属性,这是我的猜测
JSON。stringify(user)
将打印
user.toJSON()
的结果,它可以返回任何想要的结果。