preguntas de la entrevista - prototipos de funciones

Pregunta sobre el prototipo de la función:
	function Foo(){
		getName = function(){
			console.log(1)
		}
		return this;
	}
	
	Foo.getName = function(){
		console.log(2)
	}
	
	Foo.prototype.getName = function(){
		console.log(3)
	}
	
	var getName = function(){
		console.log(4)
	}
	
	function getName(){
		console.log(5)
	}
	
	Foo.getName();
	getName();
	Foo().getName();
	getName();
	new Foo.getName();
	new Foo().getName();
	new new Foo().getName();
Análisis: presencia var y funciones anónimas la ejecución del código de elevación variable se levantaron a la parte superior de las siguientes funciones;
getName = function(){
	console.log(5)
}
Función se ejecuta
  1. método Foo getName de realizar una salida;
	Foo.getName() // 2;
  1. Var es realizado getNombre = ... funcionará para mejorar la cobertura;
	getName() // 4
  1. Después de realizar la función y la cubierta getName Foo, a continuación, llamar a la función getName, entonces el getName llamada de función;
	Foo().getName() // 1
  1. función getName () Realización es una función paso se realiza en el caso;
	getName() // 1
  1. Esta función se lleva a cabo la investigación precedencia de los operadores ;
	new Foo.getName() // => new (Foo.getName)()  输出 2;
  1. Esta función realiza la misma inspección de precedencia del operador , pero esta vez el nuevo new Foo () se ejecuta ejemplo instancia de Foo Foo, porque no existe un método getName, se encuentra el prototipo para crear prototipos;
	new Foo().getName() // => (new Foo()).getName() 输出 3
  1. Esta función realiza la misma inspección de precedencia de los operadores , los dos primeros están integrados;
new new Foo().getName() // => new ((new Foo()).getName)() // 3 
Publicado 58 artículos originales · ganado elogios 20 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/fly_wugui/article/details/105227671
Recomendado
Clasificación