2010-12-17 2 views
0

안녕에 정의되지 않은 반환, 내가 클래스 에 해당하는 만들려는 아래 참조 : 내가 alert(myTest.testCode());를 호출 할 때객체가 자바 스크립트 나 자바 스크립트에서 몇 가지 기본적인 물건 주위에 내 머리를 얻으려고 노력하고

var myTest = { 
    myTester:"testing", 
    testCode:function(){ 
    return myTester; 
} 
}; 

내가 얻을 error myTester는 정의되지 않았습니다. myObj로 같은

var myObj = myTest.testCode(); 
var tester = myObj.myTester; 

내가 한 번 생성해야하는 객체입니다 : 내가 여기 달성하려고하는 것은이의 라인을 따라 뭔가, 너무 myTester의 값을 설정하려고 할 때

는 나 또한 비슷한 문제가 그 값에 액세스 할 수 있지만 일반적으로 jQuery 그냥 자바 스크립트를하지 말고 그냥 뇌 피드에 대한 순수한 자바 스크립트에서 응용 프로그램을 만들려고하고 있는데, 당신은 실제로 이것을 무엇이라고 부르는 지, 특히 클래스라고 생각하십니까? ????

감사

당신은 this에 액세스 할

답변

5

:

var myTest = { 
    myTester:"testing", 
    testCode:function(){ 
    return this.myTester; 
} 
}; 

설명 :. 각 기능에서 this는 함수가 호출되는 상황을 말한다 당신이 func()와 함수를 호출하면하면 다음 this가 참조 할 전역 객체 (브라우저의 window)에 연결합니다.
obj.func()으로 전화 할 경우 thisobj을 의미합니다.

이것은 함수와 개체 사이의 유일한 연결입니다. 함수를 객체의 속성으로 정의한다는 사실은 이 아니라이 함수를 해당 객체를 인식하도록 만듭니다.

함수는 JavaScript의 첫 번째 클래스 객체이며 (예 : 자바와 같은 다른 언어에서와 마찬가지로) 모든 객체 또는 클래스에 바인딩되지 않습니다.


그러나

var myObj = myTest.testCode(); 
var tester = myObj.myTester; 

작동하지 않을 것입니다

, myTest.testCode()로 반환 문자열 "testing" (문자열은 myTester 속성이 없습니다).

var myTest = { 
    myTester:"testing", 
    testCode:function(){ 
    return this; 
} 
}; 

을하지만, 두 줄은 좀 소개를 읽어 제안

var tester = myTest.myTester; 

동일하다 :이 코드를 작동하게하려면, 당신은 testCodethis을 반환해야 자바 스크립트, 예. MDC - JavaScript Guide 및 특히 개체에 대한 읽기.

P .: 매우 정확하려면 클래스가 JavaScript에 없습니다. 객체와 생성자 함수 만.

+0

내가 얻을 수있는 방법을 여러 값을 위와 같이 부랑자가 될 수 있습니다

당신은 대신

var tester = myTest.myTester; 

다시 단계를 위해 할 수있는, 클래스에 대한 일반적인 패턴은 다음과 같이 될 수있다 예 즉 myTester : myTester2 널 : NULL, testCode() 함수() {this.myTester = "123"; this.myTester2 = "456"; } 난 당신이 내 의미 감사 – davethecoder

+0

minus4 @를 얻을 경우 testcode에 무슨 일이 있었는지에 따라 달라 myTester 및 myTester2의 값을 얻을 것입니다 방법 : 글쎄, 당신의 목적은'var에 MYTEST에 저장되어있는 경우 = {}'. 'myTest.testCode를(); '와 그 후 당신은 myTest.myTester' 또는'myTest.myTester2''를 통해 값에 액세스 할 수 있습니다 그럼 당신은 할 것이다. 하지만 어쨌든 아무 것도 반환하지 않으므로'testCode()'의 반환 값을 저장할 필요가 없습니다. –

+0

악인 네는 모든 감사 PAL 방식 함께 :-) 오는 것을 시도 – davethecoder

0

귀하의 예제에서 당신이 가지고있는 것은 클래스라고 할 수 없습니다. 제 생각에는 생성자 기능이 없기 때문입니다. 이 시점에서 그것은 단지 대상 일뿐입니다.펠릭스 클링 언급

으로, 당신은 명시 적으로 메서드 내에서 개체의 속성을 참조 this를 사용해야합니다.

이 예제는 당신이 원하는 것을 할 작동하지 않습니다

var myObj = myTest.testCode(); 
var tester = myObj.myTester; 

(한 번 this를 사용하는 고정)을 testCode 방법은 myTester 속성 (문자열)을 반환합니다. 그 문자열은 myTester 속성이 그 자체 않기 때문에 tester 변수는 undefined이 포함됩니다.

MyClass = function(initialValue) { 
    this._myProperty = initialValue; 
} 

MyClass.prototype = { 
    getMyProperty: function() { 
    return this._myProperty; 
    }, 

    setMyProperty: function(value) { 
    this._myProperty = value; 
    } 
}; 

var myObj = new MyClass("test"); 
alert(myObj.getMyProperty()); 
myObj.setMyProperty("something"); 
관련 문제