전역 함수로 자바 스크립트의 기능 또한함수() {여기에 몇 가지 코드}입니다 전화 나 자바 스크립트의 주요 기능이
같은function a() {
function b() {
// some code here
}
}
보이는이 주요 기능의 자식 기능이 이제 함수 b를 직접 호출하려고합니다. 그때 어떻게하는지.
전역 함수로 자바 스크립트의 기능 또한함수() {여기에 몇 가지 코드}입니다 전화 나 자바 스크립트의 주요 기능이
같은function a() {
function b() {
// some code here
}
}
보이는이 주요 기능의 자식 기능이 이제 함수 b를 직접 호출하려고합니다. 그때 어떻게하는지.
명시 적으로 같은 전역 객체에 b
노출을 시도 할 수 이 :
function a() {
function b() {
// some code here
}
window.exposed = b;
}
그리고 호스트 환경에 윈도우 객체가 없다면? – RobG
는 당신은 할 수 없도록
function b() {
some code here
}
function a() {
b();
}
이것은 명백한 대답이지만 'b'에서 'a'의 지역민에 액세스하는 방법 즉, 클로저를 동일하게 만들기 위해 'a'의 지역 주민을 끌어 올리는 방법에 대한 설명이 없습니다. –
왜 코드를 올바르게 코딩하지 않는가? 전 세계로 전화하십시오. – user1289347
처럼 전화 기능 A의 내부 기능 B를 선언하지 마십시오. 좋아
function a() {
this.b = function() {
some code here
}
}
그리고 그것을 호출 : 다음
var a = {
b: function()
{
//some code here
}
};
그리고 단지 말 :
var x = new a();
a.b();
당신은 또한 당신의 기능을 가진 객체 리터럴을 만들 수 있습니다 당신은, 그러나 뭔가를 할 수 있습니다 :
a.b();
당신은 또한 함수 개체 자체의 속성을 만들고, 그런 식으로 액세스 할 수 있습니다 :
function a()
{
};
a.b = function()
{
//Some code here
};
을 그리고 그것을 호출
a.b();
많은 솔루션이 여기에있다는 단 하나 나는 그것이 자명 한 일 입니처럼 보이는, 그래서 그 뜻에 맞게 글로벌 객체에 기능을 부착하는 생각 ared 기능.
function a() {
// Protect against ES5 strict mode, assume function is called as global code
if (typeof this !== undefined) {
this.b = function() { /* whatever */ };
}
}
혹은 당신의 코딩 스타일 나은 다음 정장 :
a();
:
function a() {
function b() { /* whatever */};
if (typeof this !== undefined) {
this.b = b;
}
}
는 단순히 호출 유일한 차이점은 a
이 실행될 때까지 사용할 수 없습니다 것입니다 ES3 또는 ES5 비 엄격 모드에서 예상대로 작동합니다. (가) 위의이가 정의되어 있지 않다고의 결과 곳 ES5에게 엄격한 한계를 극복하기 위해, 글로벌 코드로 를 호출 설정된 이 명시 적으로 :
a.call(this);
또는 전역 객체에 대한 몇 가지 다른 적절한 참조
.그 이외의 브라우저 호스트 가능성이 창 객체가되지 않습니다하지 적어도 때문에, 신뢰성이 떨어지는이기 때문에 내가 창를 사용하여 멀리 머물렀던.
함수를 선언하는 함수. 얼마나 비뚤어진!;) b()를 잘라내어 붙여 넣기 (a) (전역 스크립트 수준, 따라서 전역 가시성)와 동일한 수준으로 가져 오지 못했습니까? –