Javascript [对象]是什么意思?

Javascript [对象]是什么意思?,javascript,jquery,object,Javascript,Jquery,Object,我试图对函数返回的值发出警报,我在警报中得到以下信息: [object Object] 以下是JavaScript代码: $(函数() { 变量$main=$(“#main”), $1 = $('#1'), $2 = $('#2'); $2.hide();//加载页面时隐藏div#2 $main.click(函数() { $1.toggle(); $2.toggle(); }); $('#senddvd')。单击(函数() { 警惕(“你好”); var a=其可视性(); 警报(whi

我试图对函数返回的值发出警报,我在警报中得到以下信息:

[object Object]  
以下是JavaScript代码:


$(函数()
{
变量$main=$(“#main”),
$1 = $('#1'),
$2 = $('#2');
$2.hide();//加载页面时隐藏div#2
$main.click(函数()
{
$1.toggle();
$2.toggle();
});
$('#senddvd')。单击(函数()
{
警惕(“你好”);
var a=其可视性();
警报(whichIsVisible());
});
函数whichIsVisible()
{
如果(!$1.is(':hidden')返回$1;
如果(!$2.is(':hidden')返回$2;
}
});

whichIsVisible
是我试图检查的函数。

是该对象函数返回的值


我理解您的意图,因为我回答了关于确定哪个div可见的问题。:)
whichIsVisible()
函数返回一个实际的jQuery对象,因为我认为这在编程上更有用。如果要使用此函数进行调试,可以执行以下操作:

function whichIsVisible_v2()
{
    if (!$1.is(':hidden')) return '#1';
    if (!$2.is(':hidden')) return '#2';
}
for(var property in obj) {
    alert(property + "=" + obj[property]);
}

也就是说,如果您试图调试问题,您确实应该使用适当的调试器,而不是
alert()
。如果您使用的是Firefox,它将非常出色。如果您使用的是IE8、Safari或Chrome,它们都有内置调试器。

从对象到字符串的默认转换是
“[object object]”

在处理jQuery对象时,您可能需要这样做

alert(whichIsVisible()[0].id);
打印元素的ID

如评论中所述,您应该使用Firefox或Chrome等浏览器中包含的工具,通过执行
console.log(whichIsVisible())
而不是
alert
来内省对象


旁注:ID不应以数字开头。

[object object]
是javascript中对象的默认字符串表示形式

如果您想知道对象的属性,只需按如下方式查看:

function whichIsVisible_v2()
{
    if (!$1.is(':hidden')) return '#1';
    if (!$2.is(':hidden')) return '#2';
}
for(var property in obj) {
    alert(property + "=" + obj[property]);
}
在您的特定情况下,您将获得一个jQuery对象。尝试这样做:

$('#senddvd').click(function ()
{
   alert('hello');
   var a=whichIsVisible();
   alert(whichIsVisible().attr("id"));
});

这将提醒可见元素的id。

[object object]
是JavaScript
对象的默认字符串表示形式。如果运行以下代码,您将得到:

alert({}); // [object Object]
您可以通过如下方式重写
toString
方法来更改默认表示:

var o = {toString: function(){ return "foo" }};
alert(o); // foo

您有一个javascript对象

$1
$2
是jquery对象,可能使用
警报($1.text())
获取文本或
警报($1.attr('id');


您必须像jQuery对象一样对待
$1
$2

正如其他人所指出的,这是对象的默认序列化。但为什么它是
[object object]
而不仅仅是
[object]

这是因为Javascript中有不同类型的对象

  • 函数对象:
    stringify(函数(){})
    ->
    [对象函数]
  • 数组对象:
    stringify([])
    ->
    [对象数组]
  • RegExp对象
    stringify(/x/)
    ->
    [object RegExp]
  • 日期对象
    stringify(新日期)
    ->
    [对象日期]
  • 对象对象
    stringify({})
    ->
    [对象对象]
这是因为构造函数被称为
Object
(大写字母“O”),术语“Object”(小写字母“O”)指的是事物的结构性质

通常,当您在Javascript中谈论“对象”时,实际上是指“对象对象””,而不是其他类型

其中
stringify
应如下所示:

function stringify (x) {
    console.log(Object.prototype.toString.call(x));
}

您可以像这样在[object]中看到值

Alert.alert(  JSON.stringify(userDate)  );
    realm.write(() => {
       const userFormData = realm.create('User',{
       user_email: value.username,
       user_password: value.password,
      });
     });

      const userDate = realm.objects('User').filtered('user_email == $0', value.username.toString(), );
      Alert.alert(  JSON.stringify(userDate)  );
像这样试试

Alert.alert(  JSON.stringify(userDate)  );
    realm.write(() => {
       const userFormData = realm.create('User',{
       user_email: value.username,
       user_password: value.password,
      });
     });

      const userDate = realm.objects('User').filtered('user_email == $0', value.username.toString(), );
      Alert.alert(  JSON.stringify(userDate)  );
参考文献


您正试图返回一个对象。由于没有好的方法将对象表示为字符串,因此对象的
.toString()
值会自动设置为
“[object object]”
Basics

您可能不知道,但在JavaScript中,每当我们与字符串、数字或布尔原语交互时,我们就会进入一个隐藏的对象阴影和强制的世界

字符串、数字、布尔值、null、未定义和符号

JavaScript中有7种基本类型:
undefined
null
boolean
string
number
bigint
symbol
。其他所有类型都是一个对象。基本类型
boolean
string
number
都可以用它们的对象名称包装这些对象分别是
布尔
字符串
数字
构造函数的实例

typeof true; //"boolean"
typeof new Boolean(true); //"object"

typeof "this is a string"; //"string"
typeof new String("this is a string"); //"object"

typeof 123; //"number"
typeof new Number(123); //"object"
如果原语没有属性,为什么
“这是一个字符串”。length
返回一个值

因为JavaScript很容易在原语和对象之间进行强制。在这种情况下,字符串值被强制为字符串对象,以便访问属性长度。字符串对象只使用了几分之一秒,然后被牺牲给垃圾收集之神——但本着电视探索节目的精神,我们将捕获难以捉摸的生物并保存它以供进一步分析

演示这一点时,进一步考虑下面的示例,其中我们将一个新属性添加到字符串构造函数原型。

String.prototype.sampleProperty = 5;
var str = "this is a string";
str.sampleProperty;            // 5
通过这种方式,原语可以访问由其各自的对象构造函数定义的所有属性(包括方法)

所以我们看到,在需要时,原语类型将适当地强制它们各自的对象对应物

分析
toString()
方法

考虑以下代码

var myObj    = {lhs: 3, rhs: 2};
var myFunc   = function(){}
var myString = "This is a sample String";
var myNumber = 4;
var myArray  = [2, 3, 5];

myObj.toString();     // "[object Object]"
myFunc.toString();    // "function(){}"
myString.toString();  // "This is a sample String"
myNumber.toString();  // "4"
myArray.toString();   // "2,3,5"
如上所述,真正发生的是当我们