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"
如上所述,真正发生的是当我们