最近面试遇到各种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
相关推荐
CSS2.0-CSS3.0-HTML5-JavaScript-JDK1.8-正则表达式,全中文帮助文档,全都是CHM版 里面包含15个CHM文件,其中有六大类,有的有多个版本全是中文版 CSS2.0就标准的一个版本,够用了 CSS3.0有P零雾雨版,ISD版还有,...
手机号-邮箱-用户名-正则表达式
前言 在ECMAScript中,有两个最常用的创建函数对象的方法,即使用函数表达式或者使用函数声明。对此,ECMAScript规范明确了一点,即是,即函数声明 必须...可以将它类比为 Variable Declaration(变量声明)。就像 Va
第16周-第10章节-Python3.5-JavaScript函数.avi
第15周-第16章节-Python3.5-javascript函数的定义.avi
javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,...
记得在面试腾讯实习生的时候,面试官问了我这样一道问题。 代码如下: //下述两种声明方式有什么不同 function foo(){}; var bar = function foo(){}; 当初只知道两种声明方式一个是函数声明一个是函数...
Ts变量声明尽量使用ES6的新的声明变量的语法 let 和 consttypeScript中允许将对象的属性设置为只读的解构赋值数组的解构赋值,并且在函数定义时
函数声明 function foo() {} 函数 foo 将会在整个程序执行前被 ...对于函数声明,函数的名称是必须的,而对于函数表达式而言则是可选的,因此,就出现了匿名函数表达式和命名函数表达式。如下: 函数声明: function fu
本文向大家展示了javascript中函数声明和函数表达式的概念及区别,介绍的非常全面,也很详尽,这里推荐给大家
在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以...
前端面试题,包含JavaScript的闭包,作用域,原型,原型链,上下文环境以及DOM,BOM封装函数深度克隆,以及一些常见的·JS问题,试题简单但是容易混淆,作为前端工程师必考题
'1-JavaScript变量与函数.html', '2-JavaScript变量作用域的各种啃.html', '3-JavaScript对象详解.html', '4-JavaScript数组详解.html', '5-JavaScript的this与闭包详解.html', '6-JavaScript函数的闭包.html',...
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 试一下就知道这段代码的意思就是声明一个函数,然后立刻执行,因为Javascript中的变量作用域是基于函数的,所以这样可以避免变量污染,但这里的位运算符“~”乍一看...
javascript经典特效---函数计算.rar javascript经典特效---函数计算.rar javascript经典特效---函数计算.rar
正则表达式,正则表达式或正则表达式(有时称为有理表达式)是定义搜索模式的一系列字符。 通常,字符串搜索算法会将此类模式用于字符串的“查找”或“查找并替换”操作,或用于输入验证。 正则表达式是用于匹配...
javascript中的函数声明与函数表达式使用比较频繁,可能很多的朋友都不知道他们之间的区别,在此为大家详细介绍下,希望对大家有所帮助
JavaScript--正则表达式 正则表达式(regular expression)对象包含一个正则表达式模式(pattern)。它具有用正则表达式模式去匹配或代替一个串(string)中特定字符(或字符集合)的属性(properties)和方法(methods)。
001-HTML中嵌入JavaScript代码的第一种方式 002-HTML中嵌入JavaScript代码的第二种方式 003-HTML中嵌入JavaScript代码的第三种方式 001-BOM编程-open和close 002-open 003-弹出消息框和确认框 004-当前窗口设置为...