함수식과 대상방향

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 
	// , 

좋은 웹페이지 즐겨찾기