`
wyzxzws
  • 浏览: 392500 次
  • 性别: Icon_minigender_1
  • 来自: dazhou
社区版块
存档分类
最新评论

面试总结(一)-javascript函数声明、函数表达式、变量原型问题

阅读更多

最近面试遇到各种javascript变态的原型链问题,总结如下(注释的是执行结果):

测试环境:360快速浏览器,firefox

console.log("//////////////////函数表达式/////////////////////////////");
var testProto = function(){
	console.log("testProto.111..");
}

console.log("-11111---"+(typeof testProto));//-11111---function

console.log("-11111--aaa-"+(testProto.prototype));//-11111--aaa-[object Object] 

console.log("-11111--bbbb-"+(testProto.constructor));//-11111--bbbb-function Function() { [native code] }

console.log("-11111--cccc-"+(testProto instanceof Function));//-11111--cccc-true 

var testProto = 1;

console.log("-22222---"+(typeof testProto));//-22222---number 

console.log("-22222--aaa-"+(testProto.prototype));//-22222--aaa-undefined 

console.log("-22222--bbbb-"+(testProto.constructor));//-22222--bbbb-function Number() { [native code] }

console.log("-22222--cccc-"+(testProto instanceof Object));//-22222--cccc-false

console.log("//////////////////函数声明/////////////////////////////");
function testProto(){
	console.log("testProto..2222.");
}

console.log("-11111---"+(typeof testProto));//-11111---number

console.log("-11111--aaa-"+(testProto.prototype));//-11111--aaa-undefined 

console.log("-11111--bbbb-"+(testProto.constructor));//-11111--bbbb-function Number() { [native code] }

console.log("-11111--cccc-"+(testProto instanceof Function));//-11111--cccc-false 

console.log("//////////////////实例化/////////////////////////////"+testProto);
try{
	var vtp = new testProto();
	console.log("-11111---"+(typeof vtp));

	console.log("-11111--aaa-"+(vtp.prototype));

	console.log("-11111--bbbb-"+(vtp.constructor));

	console.log("-11111--cccc-"+(vtp instanceof testProto));
}catch(e){
	console.log("error::"+e.message);//error::number is not a function 
}

var testProto = function(){
	console.log("testProto.3333..");//testProto.3333.. 
}
console.log("//////////////////覆盖变量/////////////////////////////"+testProto);
/**
//////////////////覆盖变量/////////////////////////////function (){
	console.log("testProto.111..");
} 
*/
try{
	var vtp = new testProto();
	console.log("-11111---"+(typeof vtp));//-11111---object 

	console.log("-11111--aaa-"+(vtp.prototype));//-11111--aaa-undefined 

	console.log("-11111--bbbb-"+(vtp.constructor));
	/**
		-11111--bbbb-function (){
			console.log("testProto.3333..");
		} 
	*/

	console.log("-11111--cccc-"+(vtp instanceof testProto));//-11111--cccc-true
}catch(e){
	console.log("error::"+e.message);
}

var testProto = 1;

console.log("-22222---"+(typeof testProto));//-22222---number 

console.log("-22222--aaa-"+(testProto.prototype));//-22222--aaa-undefined 

console.log("-22222--bbbb-"+(testProto.constructor));//-22222--bbbb-function Number() { [native code] }

console.log("-22222--cccc-"+(testProto instanceof Object));//-22222--cccc-false

 

分享到:
评论

相关推荐

    js 面试24道经典面试题总结

    - 函数在JavaScript中是如何声明的?`function`关键字、表达式函数以及箭头函数有何异同? - 如何实现函数的重载?JavaScript中是否存在真正的函数重载? - 介绍JavaScript原型链的工作原理,以及`__proto__`和`...

    一些关于面试的总结.zip

    2. **函数**:理解函数的概念,包括函数声明、函数表达式(匿名函数、箭头函数)、参数默认值、rest参数、函数返回值等。闭包是JavaScript中的高级特性,面试中可能会让你解释闭包的工作原理及其应用场景。 3. **...

    计算机软件-编程源码-突破JavaScript编程实例五十讲.zip

    通过这五十个实例的练习,开发者能够全面提高JavaScript编程能力,无论是在解决实际问题还是在面试中,都能展现出更扎实的技术功底。 总结起来,《突破JavaScript编程实例五十讲》是一个综合性的学习资源,它将帮助...

    ES6总结及面试题集合

    - `let`用于块级作用域的变量声明,解决了var导致的变量提升和函数作用域问题。 - `const`用于声明常量,一旦赋值,就不能再次更改。 2. **解构赋值**: - 允许从数组或对象中提取数据,赋值给新的变量,简化了...

    一套比较完整的javascript面试题(部分答案)

    文件内容也触及了JavaScript函数和数组的原型方法,如`Function.prototype`和`Object.prototype`。这些原型对象定义了函数和对象共有的方法,例如`apply`、`call`、`bind`等,它们可以用来改变函数执行时的上下文...

    js面试技巧,面试题总结,MK

    2. **函数与作用域**:函数的定义、调用方式,以及函数表达式和函数声明的区别。深入理解作用域链和闭包机制,闭包的应用场景如模块化、防抖和节流等。 3. **原型与原型链**:理解对象的原型、`__proto__`、`...

    leetcode-javascript

    1. 函数:JavaScript支持函数式编程,可以使用函数表达式、函数声明、闭包、高阶函数等。在LeetCode中,函数常被用于实现特定的算法。 2. 面向对象:JavaScript的原型链和类概念,以及构造函数、实例化、继承、封装...

    5个JavaScript经典面试题

    在文档中的例子展示了通过立即执行函数表达式(IIFE)创建了一个局部作用域,在这个作用域内声明的变量不会影响到全局作用域。这演示了在JavaScript中变量作用域的特性。 第二个面试题是关于创建原生方法(native ...

    阿里前端面试题第二期.pdf

    ### JavaScript 面试知识点总结 #### 基本数据类型 JavaScript 的基本数据类型包括:`Number`(数字)、`String`(字符串)、`Boolean`(布尔)、`Null`(空)、`Undefined`(未定义)、`Symbol`(符号)和 `BigInt...

    面试笔试题,希望大家能用到(部分)

    根据给定文件的信息,我们可以将这些笔试题目概括为以下...通过以上知识点的总结,可以帮助面试者更好地准备笔试题目的相关内容,并对HTML、JavaScript、Struts框架、JSTL标签库以及J2SDK的安装与配置有更深入的理解。

    js高级面试题

    Vue 使用了一个编译器来解析模板语法,将它们转换为 JavaScript 函数,然后在数据变化时执行这些函数来更新视图。 ### 介绍 Vue 的实现流程 1. 初始化 Vue 实例,创建响应式数据。 2. 编译模板,将模板字符串转换...

    JavaScript面试开发常用的知识点总结

    JavaScript是Web开发中不可或缺的一部分,尤其在面试环节,掌握JavaScript的核心知识点至关重要。本文将深入探讨JavaScript面试中常见的语法和类型、数据结构和类型等方面的知识。 首先,我们关注语法和类型。在...

    淘宝百度校招前端工程师面试题目

    - **概念理解**:闭包是指有权访问另一函数作用域内的变量的函数,创建闭包最常见的方式就是在一个函数内部创建另一个函数。 - **实践应用**:闭包常用于封装私有变量和方法,实现模块化编程。 **3. 排序算法举例并...

    《Web前端开发从入门到精通》[定义].pdf

    * JavaScript的函数基本概念,包括函数的声明、调用、参数和返回值等 * JavaScript的数组、字符串、异常处理、this关键字等概念 JavaScript高级实战 * 浏览器对象模型、文档对象模型、事件处理等概念 * 滚动类效果...

    JS常见面试试题总结【去重、遍历、闭包、继承等】

    闭包是JavaScript的核心概念之一,指的是函数和声明该函数的词法环境的组合。通过闭包,函数可以访问到函数外部的变量。闭包的典型应用场景包括模块化封装、数据封装以及函数式编程。实现闭包主要有两种方式,一种...

    前端面试知识点目录一览

    - JavaScript高级特性:作用域、作用域链、闭包、原型和原型链、this指向、事件循环机制、异步编程(包括promise、async/await)等。 Vue相关知识点: - Vue基础:了解Vue的基本指令、实例的属性和方法、实例生命...

    前端面试必看知识点

    11. 前端开发面试知识点大纲:这一部分总结了前端工程师需要掌握的包括HTML、CSS、JavaScript、Node.js、JSON、AJAX、HTTP、安全、正则表达式、优化、重构、响应式设计、移动端开发、团队协作、代码维护、搜索引擎...

    Front_end_interview:前端面试的知识点总结

    4. 函数:函数声明、函数表达式、箭头函数的区别,以及作用域、闭包、this的概念。 三、对象与数组 1. 对象:创建、访问属性的方法,以及对象的浅拷贝和深拷贝。 2. 属性操作:getter和setter的运用,以及Object....

Global site tag (gtag.js) - Google Analytics