함수식과 대상방향
8271 단어 ECMAScript
함수식과 대상방향
함수
함수는 언제 어디서나 실행할 수 있는 문장이다.
함수는 ECMAScript의 핵심입니다.
함수 만들기 function fnOne() {// ,
//
}
var fnTwo = function () {//
};
function () {// ,
}
(function fnThree() {
})();//
(function () {})();//
익명 함수와 명명 함수의 차이 fnOne();// , function
fnTwo();//
var fnTwo =function () {};// ,fnTwo
function fnOne() {}
함수 반환값 function fnTest() {
return "value";// return
alert("Hello!!!");// return ,
}
함수 매개 변수 function fnTest(arg1,arg2,arg3) {
alert(arg1+"
"+arg2+"
"+arg3);
}
fnTest(1,2,3);
fnTest(1,2);// , undefined
arguments 대상: 함수가 실행될 때 함수 내부에arguments 대상이 있습니다. 모든 매개 변수를 포함하고 있습니다. arguments의length 속성은 전송된 매개 변수 개수를 보고합니다. function fnTest() {
for (var i=0;i< arguments.length;i++) {
alert(arguments[i]);
}
}
fnTest(1,2,3);
fnTest(45);
arguments 대상 아날로그 함수 재부팅 사용하기 function fnTest() {
var args = arguments;
switch (arguments.length) {
case 0 :
return " !!!";
case 1 :
return " :"+args[0];
case 2 :
return " :"+args[0]+" "+ args[1];
}
}
alert(fnTest());
alert(fnTest(1));
alert(fnTest(2));
arguments 대상 보충:arguments 대상의callee 속성은 그 함수를 가리킨다 function fnTest() {alert(arguments.callee);}
가방을 닫다
패키지는 계산되지 않는 변수를 포함하는 함수를 나타내는 어법을 가리킨다. 즉, 함수는 함수 외에 정의된 변수를 사용할 수 있다는 것이다.
ECMAScript에서 전역 변수를 사용하는 것은 간단한 패키지 인스턴스입니다.다음 코드를 생각해 보십시오. var msg = " !!!";
function say() {
alert(msg);
}
say();
ECMAScript에서 함수 설명에서 함수 외부에 보이는 모든 변수는 함수 내부에서 최종 값에 접근할 수 있습니다! var g = " !!!";
function fnA() {
var a="A";
function fnB() {
var b="B";
alert(a);// a
alert(c);// c
function fnC() {
var c = "C";
alert(a+"
"+b);// ,
}
}
}
//
function fnTest(num1,num2) {
var num3 = num1+num2;
return function () {
alert("num1+num2 "+num3);
};
}
var result = fnTest(23,56);
result();
패키지 함수는 변수의 최종 값에만 접근할 수 있습니다!!! function fnTest(arr) {
for (var i=0;i < arr.length;i++) {
arr[i]=function () {
alert(i+" | "+arr[i]);
};
}
}
var arr = [0,1,2,3,4,5];
fnTest(arr);
for (var i=0;i < arr.length;i++) {
arr[i]();// 6 undefined
// ,i 6, 6
}
닫힌 패키지에서 닫힌 패키지 밖의 변수 값에 접근할 수 있을 뿐만 아니라, 그 값도 설정할 수 있다 function fnTest() {
var a=123;
return {
set:function (param) {a = param},
get:function () {return a}
};
}
var obj = fnTest();
alert(obj.get());//123
obj.set(4);
alert(obj.get());//4
대상
객체 만들기 var obj = new Object();
alert(obj);
alert(Object);//
Object();//
//
function Demo() {
}
var d = new Demo();// , new
alert(d);//object
this 키워드의 사용법 function Demo() {
this.property = " !!!";
}
d = new Demo();
alert(d.property);// !!!
new를 사용하지 않고 구조 함수를 실행할 때,this는 윈도우를 가리킨다 function Demo() {
this.property = " !!!";
}
var d = Demo();
alert(d.property);//undefined
alert(window.property);// !!!
구조 함수에 매개 변수를 전달할 수 있고, 매개 변수를 대상의 속성에 부여할 수 있다 function Person(name,age) {
this.name = name;
this.age = age;
}
var p1 = new Person("CJ",18);
instanceof 연산자, 대상이 어떤 종류인지 판단하는 데 사용됩니다 (ECMAScript에는 클래스가 존재하지 않지만, 우리는 여기서 이 용어를 사용합니다). var str = new String("string");
alert(str instanceof String);//true
var arr = new Array();
alert(arr instanceof Array);//true
function Demo() {}
var d = new Demo();
alert(d instanceof Demo);//true
대상 대상 용어
개체 대상 언어는 개발자에게 다음과 같은 네 가지 기본 기능을 제공해야 합니다.
봉인 - 관련 정보(데이터나 방법을 막론하고)를 대상에 저장하는 능력..
모으기 - 하나의 대상을 다른 대상에 저장하는 능력..
계승 - 다른 클래스(또는 여러 클래스)에서 클래스의 속성과 방법을 얻을 수 있는 능력..
다태적 - 다양한 방법으로 실행할 수 있는 함수나 방법을 작성하는 능력..
ECMAScript는 이러한 요구 사항을 지원하므로 객체에 대한 것으로 간주됩니다.
봉인과 사유 속성: 봉인은 사유를 요구하지 않습니다!
function Person(name,age) {
this.name = name;//
this.age = age;
}
var p1 = new Person("CJ",18);
ECMAScript는 현재 버전에서는 개인 속성을 지원하지 않지만 패키지를 닫아서 시뮬레이션할 수 있습니다 function Person(name,age) {
this.getName = function () {return name};
this.setName = function (param) {name=param};
this.getAge = function () {return age};
this.setAge = function (param) {age=param};
}
var p1 = new Person("CJ",18);
alert(p1.name);//undefined
alert(p1.getName());//CJ
p1.setName("XXX");
alert(p1.getName());//XXX
상속:prototype 속성
ECMAScript에서 계승은 구조 함수의prototype 속성을 통해 이루어진다 function Person(name,age) {
this.name=name;
this.age = name;
}
alert(Person.prototype);//object
Person.prototype.sort = " ";
var p1 = new Person("CJ",18);
alert(p1.sort);// Person sort
모든 대상은 하나의 방법이 있습니다. isPrototypeOf () 는 다른 대상의 원형인지 아닌지를 판단하는 데 사용됩니다. function Person() {}
var p1 = new Person();
alert(Person.prototype.isPrototypeOf(p1));//true
ECMAScript에서 한 클래스가 다른 클래스를 계승하는 방식은 비교적 특수하다 function ClassA() {
this.a = "A";
}
function ClassB() {
this.b = "B";
}
ClassB.prototype = new ClassA(); // ClassB ClassA
var b = new ClassB();
alert(b.a);//"A", a
alert(b instanceof ClassB);//true
alert(b instanceof ClassA);//true, ,b ClassA
alert(ClassB.prototype.isPrototypeOf(b));//true
alert(ClassA.prototype.isPrototypeOf(b));//true,ClassA.prototype b
하지만 이런 계승에는 주의점이 있다. function ClassA() {
this.a = "A";
}
function ClassB() {
this.b = "B";
}
var b = new ClassB();// ClassB
ClassB.prototype = new ClassA();// ClassA, prototype
alert(b instanceof ClassB);//false
alert(b instanceof ClassA);//false
alert(ClassB.prototype.isPrototypeOf(b));//false
alert(ClassA.prototype.isprototypeOf(b));//false
구조 함수에 매개 변수가 필요할 때 function Person(name,age) {
this.name = name;
this.age = age;
}
function Teacher(name,age,lesson) {
this.tempMethod = Person;//
this.tempMethod(name,age);
// Person , Teacher , Person this Teacher
delete this.tempMethod;//
this.lesson = lesson;
}
ClassB.prototype =new ClassA();//
var t1 = new Teacher("HUXP",18,"C#");
alert(t1.name+" | "+ this.age+ " | "+this.lesson);
사실상 대상 사칭에 대해 ECMAScript는 더욱 간결한 내장 방법인call을 제공합니다. 모든 함수에서 호출됩니다. 첫 번째 매개 변수는 사칭할 대상입니다. 나머지는 함수에 필요한 다른 매개 변수입니다. function Demo(arg) {
this.name = arg;
}
var obj = new Object();
Demo.call(obj,"name");
alert(obj.name);//"name"
// call
function Person(name,age) {
this.name = name;
this.age = age;
}
function Teacher(name,age,lesson) {
Person.call(this,name,age);//
this.lesson = lesson;
}
정적 속성 및 Function 클래스
ECMAScript에서 재미있는 점은 함수 자체도 대상이고 (그룹과도 같다) new를 사용해서 만들 수 있다는 것이다.Function 구조 함수는 최소한 두 개의 문자열 매개 변수를 전달해야 합니다. 빈 문자열일 수 있습니다.마지막 문자열을 제외하고는 함수체 문장으로 실행되며, 다른 매개 변수는 함수 매개 변수 이름으로 사용됩니다! var fn = new Function();//
//
fn = new Function("arg1","alert(arg1)");// ,
//
fn = function (arg1) {alert(arg1)};// , ,
fn.property =" , "
사실상, 구조 함수에 추가된 속성은 정적 속성이라고 불리며, 실례에 의해 계승되지 않는다 function ClassDemo() {
}
ClassDemo.property = new Array();
var d =new ClassDemo();
alert(d.property);//undefined
alert(ClassDemo.property);//object
Function 클래스의 실례는 다른 방법과 속성도 있습니다. (물론 function 키워드로 설명하는 함수도 마찬가지입니다.) function outer() {
inner();
function inner() {
alert(inner.caller);
// caller , outer
}
}
function applyTest() {
var args = arguments;
this.name = args[0];
this.age=args[1];
}
var obj = new Object();
applyTest.apply(obj,["name",18]);
alert(obj.name);
alert(obj.age);
//apply call , , apply
// ,
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue.js의 v-for로 분할 할당
의 v-for 지시어로 과 같은 것을 하고 싶었습니다만, 「Vue.js 분할 대입」이나 「v-for 분할 대입」과 같이 검색해도 히트하지 않고 , 영어에서 "Vue.js Destructuring assignment"...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
function fnOne() {// ,
//
}
var fnTwo = function () {//
};
function () {// ,
}
(function fnThree() {
})();//
(function () {})();//
fnOne();// , function
fnTwo();//
var fnTwo =function () {};// ,fnTwo
function fnOne() {}
function fnTest() {
return "value";// return
alert("Hello!!!");// return ,
}
function fnTest(arg1,arg2,arg3) {
alert(arg1+"
"+arg2+"
"+arg3);
}
fnTest(1,2,3);
fnTest(1,2);// , undefined
function fnTest() {
for (var i=0;i< arguments.length;i++) {
alert(arguments[i]);
}
}
fnTest(1,2,3);
fnTest(45);
function fnTest() {
var args = arguments;
switch (arguments.length) {
case 0 :
return " !!!";
case 1 :
return " :"+args[0];
case 2 :
return " :"+args[0]+" "+ args[1];
}
}
alert(fnTest());
alert(fnTest(1));
alert(fnTest(2));
function fnTest() {alert(arguments.callee);}
var msg = " !!!";
function say() {
alert(msg);
}
say();
var g = " !!!";
function fnA() {
var a="A";
function fnB() {
var b="B";
alert(a);// a
alert(c);// c
function fnC() {
var c = "C";
alert(a+"
"+b);// ,
}
}
}
//
function fnTest(num1,num2) {
var num3 = num1+num2;
return function () {
alert("num1+num2 "+num3);
};
}
var result = fnTest(23,56);
result();
function fnTest(arr) {
for (var i=0;i < arr.length;i++) {
arr[i]=function () {
alert(i+" | "+arr[i]);
};
}
}
var arr = [0,1,2,3,4,5];
fnTest(arr);
for (var i=0;i < arr.length;i++) {
arr[i]();// 6 undefined
// ,i 6, 6
}
function fnTest() {
var a=123;
return {
set:function (param) {a = param},
get:function () {return a}
};
}
var obj = fnTest();
alert(obj.get());//123
obj.set(4);
alert(obj.get());//4
var obj = new Object();
alert(obj);
alert(Object);//
Object();//
//
function Demo() {
}
var d = new Demo();// , new
alert(d);//object
function Demo() {
this.property = " !!!";
}
d = new Demo();
alert(d.property);// !!!
function Demo() {
this.property = " !!!";
}
var d = Demo();
alert(d.property);//undefined
alert(window.property);// !!!
function Person(name,age) {
this.name = name;
this.age = age;
}
var p1 = new Person("CJ",18);
var str = new String("string");
alert(str instanceof String);//true
var arr = new Array();
alert(arr instanceof Array);//true
function Demo() {}
var d = new Demo();
alert(d instanceof Demo);//true
function Person(name,age) {
this.name = name;//
this.age = age;
}
var p1 = new Person("CJ",18);
function Person(name,age) {
this.getName = function () {return name};
this.setName = function (param) {name=param};
this.getAge = function () {return age};
this.setAge = function (param) {age=param};
}
var p1 = new Person("CJ",18);
alert(p1.name);//undefined
alert(p1.getName());//CJ
p1.setName("XXX");
alert(p1.getName());//XXX
function Person(name,age) {
this.name=name;
this.age = name;
}
alert(Person.prototype);//object
Person.prototype.sort = " ";
var p1 = new Person("CJ",18);
alert(p1.sort);// Person sort
function Person() {}
var p1 = new Person();
alert(Person.prototype.isPrototypeOf(p1));//true
function ClassA() {
this.a = "A";
}
function ClassB() {
this.b = "B";
}
ClassB.prototype = new ClassA(); // ClassB ClassA
var b = new ClassB();
alert(b.a);//"A", a
alert(b instanceof ClassB);//true
alert(b instanceof ClassA);//true, ,b ClassA
alert(ClassB.prototype.isPrototypeOf(b));//true
alert(ClassA.prototype.isPrototypeOf(b));//true,ClassA.prototype b
function ClassA() {
this.a = "A";
}
function ClassB() {
this.b = "B";
}
var b = new ClassB();// ClassB
ClassB.prototype = new ClassA();// ClassA, prototype
alert(b instanceof ClassB);//false
alert(b instanceof ClassA);//false
alert(ClassB.prototype.isPrototypeOf(b));//false
alert(ClassA.prototype.isprototypeOf(b));//false
function Person(name,age) {
this.name = name;
this.age = age;
}
function Teacher(name,age,lesson) {
this.tempMethod = Person;//
this.tempMethod(name,age);
// Person , Teacher , Person this Teacher
delete this.tempMethod;//
this.lesson = lesson;
}
ClassB.prototype =new ClassA();//
var t1 = new Teacher("HUXP",18,"C#");
alert(t1.name+" | "+ this.age+ " | "+this.lesson);
function Demo(arg) {
this.name = arg;
}
var obj = new Object();
Demo.call(obj,"name");
alert(obj.name);//"name"
// call
function Person(name,age) {
this.name = name;
this.age = age;
}
function Teacher(name,age,lesson) {
Person.call(this,name,age);//
this.lesson = lesson;
}
var fn = new Function();//
//
fn = new Function("arg1","alert(arg1)");// ,
//
fn = function (arg1) {alert(arg1)};// , ,
fn.property =" , "
function ClassDemo() {
}
ClassDemo.property = new Array();
var d =new ClassDemo();
alert(d.property);//undefined
alert(ClassDemo.property);//object
function outer() {
inner();
function inner() {
alert(inner.caller);
// caller , outer
}
}
function applyTest() {
var args = arguments;
this.name = args[0];
this.age=args[1];
}
var obj = new Object();
applyTest.apply(obj,["name",18]);
alert(obj.name);
alert(obj.age);
//apply call , , apply
// ,
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue.js의 v-for로 분할 할당의 v-for 지시어로 과 같은 것을 하고 싶었습니다만, 「Vue.js 분할 대입」이나 「v-for 분할 대입」과 같이 검색해도 히트하지 않고 , 영어에서 "Vue.js Destructuring assignment"...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.