함수에서 반환 된 값을 경고하려고하는데 경고에 다음이 표시됩니다.
[object Object]
다음은 JavaScript 코드입니다.
<script type="text/javascript">
$(function ()
{
var $main = $('#main'),
$1 = $('#1'),
$2 = $('#2');
$2.hide(); // hide div#2 when the page is loaded
$main.click(function ()
{
$1.toggle();
$2.toggle();
});
$('#senddvd').click(function ()
{
alert('hello');
var a=whichIsVisible();
alert(whichIsVisible());
});
function whichIsVisible()
{
if (!$1.is(':hidden')) return $1;
if (!$2.is(':hidden')) return $2;
}
});
</script>
whichIsVisible
내가 확인하려는 기능입니다.
답변
객체에서 문자열로의 기본 변환은 "[object Object]"
입니다.
jQuery 객체를 다룰 때 다음과 같이 할 수 있습니다.
alert(whichIsVisible()[0].id);
요소의 ID를 인쇄합니다.
코멘트에서 언급 한 바와 같이, 당신은 수행하여 인트로 스페 객체에 파이어 폭스 나 크롬 등의 브라우저에 포함 된 도구를 사용한다 console.log(whichIsVisible())
대신 alert
.
참고 : ID는 숫자로 시작하면 안됩니다.
답변
다른 사람들이 언급했듯이 이것은 객체의 기본 직렬화입니다. 하지만 왜 [object Object]
그럴까요 [object]
?
Javascript에는 다양한 유형의 객체가 있기 때문입니다!
- 기능 개체 :
stringify(function (){})
->[object Function]
- 배열 객체 :
stringify([])
->[object Array]
- RegExp 객체
stringify(/x/)
->[object RegExp]
- 날짜 개체
stringify(new Date)
->[object Date]
- … 몇 가지 더 …
- 및 개체 개체 !
stringify({})
->[object Object]
생성자 함수가 호출되고 Object
(대문자 “O”로) “object”(작은 “o”로)라는 용어는 사물의 구조적 특성을 나타 내기 때문입니다.
일반적으로 자바 스크립트에서 “객체”에 대해 이야기 할 때 실제로 는 다른 유형이 아니라 ” 객체 객체 “를 의미 합니다.
여기서 stringify
다음과 같아야합니다 :
function stringify (x) {
console.log(Object.prototype.toString.call(x));
}
답변
[object Object]
javascript에서 객체의 기본 toString 표현입니다.
개체의 속성을 알고 싶다면 다음과 같이 개체에 대해 알아보십시오.
for(var property in obj) {
alert(property + "=" + obj[property]);
}
특정 경우에는 jQuery 객체를 얻고 있습니다. 대신 다음을 시도하십시오.
$('#senddvd').click(function ()
{
alert('hello');
var a=whichIsVisible();
alert(whichIsVisible().attr("id"));
});
이것은 보이는 요소의 ID를 경고해야합니다.
답변
해당 객체의 toString()
함수에서 반환하는 값 입니다.
어제 어떤 div가 표시되는지 결정하는 것에 대한 귀하의 질문에 답변했기 때문에 귀하가하려는 작업을 이해합니다 . 🙂
이 whichIsVisible()
함수는 실제 jQuery 객체를 반환 합니다. 프로그래밍 방식 으로 더 유용 할 것이라고 생각했기 때문 입니다. 이 함수를 디버깅 목적으로 사용하려면 다음과 같이하면됩니다.
function whichIsVisible_v2()
{
if (!$1.is(':hidden')) return '#1';
if (!$2.is(':hidden')) return '#2';
}
즉, 문제를 디버깅하려는 경우 보다는 적절한 디버거를 사용해야합니다alert()
. Firefox를 사용하는 경우 Firebug 는 훌륭합니다. IE8, Safari 또는 Chrome을 사용하는 경우 기본 제공 디버거가 있습니다.
답변
다음과 같이 [object 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) );
참고
답변
기초
당신은 그것을 모를 수도 있지만, JavaScript에서 우리가 문자열, 숫자 또는 부울 프리미티브와 상호 작용할 때마다 우리는 객체 그림자와 강제의 숨겨진 세계로 들어갑니다.
문자열, 숫자, 부울, 널, 정의되지 않음 및 기호.
자바 스크립트에서 7 개 기본 유형이있다 : undefined
, null
, boolean
, string
, number
, bigint
와 symbol
. 다른 모든 것은 객체입니다. 기본 유형 boolean
, string
및 number
해당 객체 대응 요소로 래핑 할 수 있습니다. 이러한 개체는 각각 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"
프리미티브에 속성이없는 경우 왜 "this is a string".length
값을 반환합니까?
JavaScript는 프리미티브와 객체 사이를 쉽게 강제하기 때문입니다. 이 경우 속성 길이에 액세스하기 위해 문자열 값이 문자열 개체로 강제 변환됩니다. 문자열 객체는 가비지 수집의 신들에게 희생 된 후 몇 초 동안 만 사용됩니다. 그러나 TV 발견 쇼의 정신에 따라 찾기 어려운 생물을 가두 고 추가 분석을 위해 보존 할 것입니다.
이를 더 설명하기 위해 String 생성자 프로토 타입에 새 속성을 추가하는 다음 예제를 고려하십시오.
String.prototype.sampleProperty = 5;
var str = "this is a string";
str.sampleProperty; // 5
즉, 프리미티브는 각각의 객체 생성자가 정의한 모든 속성 (메서드 포함)에 액세스 할 수 있습니다.
그래서 우리는 필요에 따라 기본 유형이 각각의 Object 대응 물로 적절하게 강제되는 것을 보았습니다.
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"
위에서 논의한 바와 같이, 실제로 일어나는 일은 우리 toString()
가 원시 유형에 대해 메소드를 호출 할 때 , 메소드를 호출하기 전에 객체 대응으로 강제 변환되어야한다는 것입니다.
즉 , 다른 기본 유형과 myNumber.toString()
동일 Number.prototype.toString.call(myNumber)
하고 유사합니다.
그러나 기본 유형이 toString()
해당 Object 생성자 함수 대응 메소드에 전달되는 대신에 기본 유형이 toString()
Object 함수 생성자 ( Object.prototype.toString.call(x)
)의 메소드에 매개 변수로 전달되도록 강제하면 어떻게 될까요?
Object.prototype.toString () 자세히 살펴보기
당으로 문서 toString 메소드가 호출되면, 다음 단계가 수행됩니다
- 는 IF
this
값이undefined
반환"[object Undefined]"
.- 는 IF
this
값이null
반환"[object Null]"
.- 이 값이 위의 값이 아닌 경우 값을 인수로 전달하는
O
호출 결과가 됩니다.toObject
this
- class를의
[[Class]]
내부 속성 값으로 지정합니다O
.- 세 개의 문자열을 연결의 결과 인 문자열 값 반환
"[object "
,class
등을"]"
.
다음 예제에서 이것을 이해하십시오.
var myObj = {lhs: 3, rhs: 2};
var myFunc = function(){}
var myString = "This is a sample String";
var myNumber = 4;
var myArray = [2, 3, 5];
var myUndefined = undefined;
var myNull = null;
Object.prototype.toString.call(myObj); // "[object Object]"
Object.prototype.toString.call(myFunc); // "[object Function]"
Object.prototype.toString.call(myString); // "[object String]"
Object.prototype.toString.call(myNumber); // "[object Number]"
Object.prototype.toString.call(myArray); // "[object Array]"
Object.prototype.toString.call(myUndefined); // "[object Undefined]"
Object.prototype.toString.call(myNull); // "[object Null]"
참조 :
https://es5.github.io/x15.2.html#x15.2.4.2
https://es5.github.io/x9.html#x9.9
https://javascriptweblog.wordpress.com/ 2010 / 09 / 27 / 자바 스크립트 프리미티브의 비밀 생활 /
답변
[object Object]
JavaScript의 기본 문자열 표현입니다 Object
. 이 코드를 실행하면 얻을 수있는 것입니다.
alert({}); // [object Object]
다음 toString
과 같이 메서드 를 재정 의하여 기본 표현을 변경할 수 있습니다 .
var o = {toString: function(){ return "foo" }};
alert(o); // foo