Tipo de función del tipo de datos de referencia de JavaScript: creación de funciones, propiedades internas de funciones, propiedades y métodos de funciones, etc.

Tipo de función del tipo de datos de referencia de JavaScript

(1) Crear función

var add = function(x,y){
    
    
  return x+y;
};
console.log(add(10,10));//20

(2) La función js no está sobrecargada

function sum(x,y){
    
    
  return x+y+',执行函数1。。。。';
}

function sum(x,y){
    
    
  return x+y+',执行函数2。。。。';
}
console.log(sum(10,10));       //20,执行函数2。。。。

(3) En función del valor

function callSomeFunction(someFunction,someArg){
    
    
  return someFunction(someArg)       //返回一个函数和参数add10(20)
}
function add10(num){
    
    
  return num+10;
}
console.log(callSomeFunction(add10,20));   //函数add10()作为参数传入callSomeFunction()

(4) Atributos internos de la función: argumentos, esto, llamador

1. Argumentos: guarde los parámetros.Argumentos es un objeto similar a una matriz y su atributo llamado es un puntero que apunta a la función propietaria de este objeto de argumentos, es decir, f()

function f(num){
    
    
  if(num<=1) return 1;
  else return num*arguments.callee(num-1);  
}
console.log(f(5));//120  

5 f(4)=5 4 f(3)=5 4 3 f(2)=5 4 3 2 f(1)=5 4 3 2 2*1=120

2 、 esto

window.color = 'red'
var obj = {
    
    color:'blue'}
function sayColor(){
    
    
  console.log(this);
}
sayColor();                //this是widow全局对象 
obj.sayColor = sayColor;
obj.sayColor();            //this是对象obj的执行环境对象

3. llamador: contiene una referencia a la función que llama a la función actual (la función que llama a esta función)

function outer(){
    
    
  inner();
}
function inner(){
    
    
  console.log(inner.caller);//ƒ outer() {inner();}
  console.log(arguments.callee.caller);//访问相同信息   ƒ outer() {inner();}
}
outer();

(5) Atributos de función: longitud, prototipo

1. longitud: la cantidad de parámetros con nombre que la función espera recibir.

console.log(sum.length);

2. Prototipo: guarda la ubicación real de todos los métodos de instancia, no es enumerable en E5, por lo que no se puede descubrir usando for-in.

console.log(sum.prototype);

(6) Métodos de función: aplicar (), llamar (), vincular ()

Establezca el valor del objeto en el cuerpo de la función (cambie el puntero de esto dentro del cuerpo de la función)

1. apply() pasa parámetros: this+matriz de parámetros

function callSum1(n1,n2){
    
    
  return sum.apply(this,arguments);
}
function callSum2(n1,n2){
    
    
  return sum.apply(this,[n1,n2]);
}

2. call() pasa parámetros: esto + múltiples valores de parámetros

function callSum3(n1,n2){
    
    
  return sum.call(this,n1,n2)
}
function callSum4(n1,n2){
    
    
  return sum.cal(this,arguments[0],arguments[1])
}
console.log(callSum1(10,20));   
console.log(callSum2(20,20));    
console.log(callSum3(10,40));    
console.log(callSum4(20,40));    

3. parámetros entrantes de bind(): especifique este valor de la función vinculada

window.color = 'red'
var obj = {
    
    color:'blue',name:'HNN'}
function sayColor(){
    
    
  console.log(this.color);
}

var objSayColor = sayColor.bind(obj)   //绑定函数的this值为obj后执行  <==> sayColor.bind(obj)()
objSayColor()              //blue    this=>obj
sayColor()                 //red     this=>window

4. Función: ampliar el alcance en el que opera la función.

function People(name,age){
    
    
  this.name = name;
  this.age = age;
  console.log(this);
}
function Student(name,age,grade){
    
    
  People.call(this,name,age)      //this代表Student,使用Student调用People中的方法,将name,age参数传过去
  this.grade = grade;
  console.log(this);
}
var stu = new Student('小明',18,'大三');
console.log(stu.name+","+stu.age+","+stu.grade);//小明,18,大三

Supongo que te gusta

Origin blog.csdn.net/m0_47147246/article/details/125731949
Recomendado
Clasificación