제 5장 (4): Function
Function 유형
함수 즉 대상, 함수 이름 즉 지침.각 함수는 Function 유형의 인스턴스입니다.함수 이름은 함수를 가리키는 바늘이다.
함수 만들기
함수를 만드는 데는 세 가지 방식이 있다.함수 성명, 함수 표현식과 구조 함수를 통해 생성됩니다.
/**
*
* */
//
function test1(x, y) {
return x + y
}
//
var test2 = function (x, y) {
return x + y
}
//
var test3 = new Function("x", "y", "return x + y")
console.log(test1(10, 20)) // 30
console.log(test2(10, 20)) // 30
console.log(test3(10, 20)) // 30
함수 이름 바늘
/**
* ,
*/
function add(x, y) {
console.log(x + y)
}
var calc = add
calc(1 , 2) // 3
calc = null //
console.log(add(1, 2)) // 3
함수 성명과 함수 표현식
함수 성명이 앞당겨져서 함수 성명에서 호출할 수 있습니다.함수 표현식이 앞당겨지지 않습니다.함수 표현식 성명 후에야 호출할 수 있습니다.작업 중에는 일반적으로 먼저 성명하고 나중에 호출한다.
/**
* ,
*/
getName(' ') // , 。
function getName(name) {
console.log(' ' + name, ' ')
}
// getSay(' , ') // 。 Uncaught TypeError: getSay is not a function
var getSay = function (say) {
console.log(say)
}
getSay(' , ') // ,
값으로서의 함수
함수 이름 자체가 변수이기 때문에 값으로도 사용할 수 있다.
/**
*
*/
function rank(key) {
return function (pre, next) {
var preValue = pre[key]
var nextValue = next[key]
return preValue - nextValue
}
}
var data = [
{name: ' ',comment: ' ',id: 2},
{name: ' ',comment: ' ',id: 1},
{name: ' ',comment: ' ',id: 4},
{name: ' ',comment: ' ',id: 3}
]
data.sort(rank('id'))
console.log(JSON.stringify(data)) // [{"name":" ","comment":" ","id":1},{"name":" ","comment":" ","id":2},{"name":" ","comment":" ","id":3},{"name":" ","comment":" ","id":4}]
this
this는 실행 환경의 대상을 인용합니다.누가 그것을 호출하면 그것은 누구를 가리킨다.함수의 호출 방식은 다음과 같은 몇 가지가 있다.
//
var source = 'window'
function getSource() {
console.log(this.source)
}
getSource() // window ( , this window)
//
var userName = ' '
var person = {
userName: ' ',
say: function () {
console.log(this.userName + ' ')
}
}
person.say() // (this person)
var say = person.say
console.log(say()) // (this window)
//
function Biography(name) {
this.name = name
}
let bg = new Biography(' ')
console.log(bg.name) //
call() 및 apply()
이 두 가지 방법은this의 지향 대상을 바꿀 수 있다.
/**
* call() apply()
* this 。
* call ,
* apply , 。( )
*/
var name = 'window'
var obj1 = {
name: 'obj1'
}
var obj2 = {
name: 'obj2'
}
function fun(msg) {
console.log(this.name, ' ', msg)
}
fun('hello') // window hello
fun.call(obj1, 'hello') // obj1 hello
fun.apply(obj2, ['hello']) // obj1 hello
bind
bind 방법은 함수의 작용역을 귀속할 수 있다
/**
* bind this
*/
color = 'red'
var obj3 = {
color: 'yellow'
}
function getColor() {
console.log(this.color)
}
var getC = getColor.bind(obj3)
getC() // yellow
인용하다
javascript 고급 프로그램 설계
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.