前端面试准备笔记之JavaScript(03)
01. 变量声明提升
在预解析的时候,成员变量和函数,被提升到最高的位置,方便其他程序访问。
- 可以先使用后声明。
- 只提升变量名,不提升变量值
- let const 声明的变量不具有变量声明提升。
// 先使用
x = 5; // 变量 x 设置为 5
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x; // 在元素中显示 x
// 后声明
var x; // 声明 x
// 先声明和初始化了x
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
// y声明可以提升,但是y=7初始化并不会提升。
var y = 7; // 初始化 y
02. 面向对象
面向对象就是使用对象来进行开发,关注的是用什么对象可以实现功能,不去关注对象中细节,早期的是面向过程进行开发,面向对象可以理解为对面向过程的一个封装。
特性:
- 抽象性,就是说在一个具体的环境中,不知道这个数据集表示的是什么对象。
- 封装性,就是将一些复杂繁琐的步骤、操作方式包裹起来,对外暴露简单的接口,通过这个简单的接口实现复杂的功能。
- 继承性,对数据进行复用,就是本身没有但是别人有,可以从别人那里得到。
- 多态性,不同的变量调用同一个方法,得到的结果不同,这个调用称为多态。
03. new 操作符都做了什么
- 创建一个空对象,并且this变量引用了该对象,同时还继承了该函数的原型。
- 属性和方法被加入到this引用的对象中。
- 新创建的对象由this引用,应且最后隐士的返回this。
04. 如何准确判断一个变量是不是数组
a instaceof Array
05. 类型判断 instanceof
// 联系3.3示例
xialuo instanceof Student //true
xialuo instanceof People //true
xialuo instanceof Object //true
[] instanceof Array //true
[] instanceof Object //true
{} instanceof Object //true
06. 比较typeof与instanceof
相同点:javascript中typeof与instanceof常用来判断一个变量是否为空,或者是什么类型的。
- typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型,细节:
- typeof一般只能返回如下几个结果:number、boolean、string、function、object、undefined
- typeof来获取一个变量是否存在,如if(typeof a!="undefined"){(alert("OK")},而不要去使用if(a)因为a如果不存在未声明则会出错。
- 对于Array,Null等特殊对象使用typeof 一律返回object,这正是typeof的局限性。
- Instanceof定义和用法:instanceof用于判断一个变量是否属于某个对象的实例(实例可以理解为引用的意思)
// 实例演示
a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假
var a = new Array();
alert(a instanceof Array); // true
alert(a instanceof Object) // true
// 如上,会返回true,同时alert(a instanceof Object)也会返回true;这是因为Array是Object的子类。
function test(){};
var a = new test();
alert(a instanceof test) // true
- 细节:
如下,得到的结果为"N",这里的instanceof测试的object是指js语法中的object,不是指dom模型对象。
if (window instanceof Object) {alert("Y") else {alert("N")}}
前端面试准备笔记之JavaScript(03)的更多相关文章
- 前端面试准备笔记之JavaScript(02)
01. this的典型应用场景 this在各个场景中取什么值,是在函数执行的时候确认的,不是在定义的时候确认的. 普通函数执行 返回window function fn1() { console.lo ...
- 前端面试准备笔记之JavaScript(04)
01. DOM的本质 xml是一种可扩展的标记性语言,可扩展就是可以描述任何结构的数据,他是一棵树,可以自定义标签,可以自己扩展. html也是一种特定的xml,他规定了一些标签的名称,结构与xml是 ...
- 前端面试准备笔记之JavaScript(01)
1.1 typeof 能判断哪些类型? typeof可以识别所有的值类型 typeof可以识别函数 //function typeof可以判断是否是引用类型(不可以再细分) //object 1.2 ...
- 前端面试知识点集锦(JavaScript篇)
目录 1.谈谈你对Ajax的理解?(概念.特点.作用) 2.说说你对延迟对象deferred的理解? 3.什么是跨域,如何实现跨域访问? 4.为什么要使用模板引擎? 5.JavaScript是一门什么 ...
- 问得最多的十个JavaScript前端面试问题
我知道有很多人不同意这种类型的面试.其实不管你喜不喜欢,你都得接受.尤其当你是自学的,而且要申请第一份工作时. 我估计很多有人其它方法来证明他自己,像Github/ 项目地址可能是非常理想的证明方 ...
- web前端面试试题总结---javascript篇
JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...
- 前端面试之JavaScript的基本数据类型!
前端面试之JavaScript的基本数据类型! JS的基本数据类型 数字 字符串 布尔值 JavaScript中有两个特殊的原始值: null (空) 和undefined (未定义), , 它们不是 ...
- 前端面试之JavaScript中数组的方法!【残缺版!!】
前端面试之JavaScript中数组常用的方法 7 join Array.join()方法将数组中所有元素都转化为字符串并连接在-起,返回最后生成的字 符串.可以指定一个可选的字符串在生成的字符串中来 ...
- 前端面试之JavaScript中的闭包!
前端面试之JavaScript中的闭包! 闭包 闭包( closure )指有权访问另一个函数作用域中变量的函数. ----- JavaScript 高级程序设计 闭包其实可以理解为是一个函数 简单理 ...
随机推荐
- 第五章 Gateway--服务网关
欧克 ,我接着上篇第四章 Sentinel–服务容错,继续写下去 开始网关之旅 5.1网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务.那么作为客户端要如何去调用 这么多的微服务呢 ...
- 使用Github快速的寻找项目
作为一个3年的码农昨天在学习项目,顺便总结一下 ,在Github找项目的几个常用方式 ,如果对您有帮助,可以点个关注,便于下次光顾! 首先我们来看一下常用命令 1.指定搜索方式 搜索文件中有spiri ...
- idea中Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.
我本机安装的mysql版本是5.7的,那么IDEA要连接mysql也应该匹配下驱动版本.把Driver改成MySQL for 5.1就可以了 在点击Test Connection测试下,成功啦!
- 通过python的socket库实现简易即时通讯小程序
前言 最近学习了一下有关tcp协议和socket有关的知识,看到许多socket实战都喜欢教如何做一个聊天程序,于是想着试试能不能不看教程自己写一个.当然我没太多时间做一个像qq一样的ui界面,所以做 ...
- 网易163 docker镜像
$ sudo echo "DOCKER_OPTS=\"--registry-mirror=http://hub-mirror.c.163.com\"" > ...
- umi3.2+ targets ie不生效的问题
直接创建umi项目 config.ts对targets{ie:11}不生效 错误方法1: 在入口页app.tsx新增 import @babel/polyfill 错误方法2: 在入口页app.tsx ...
- gitlab git仓库地址修改后更新方法
背景 由于gitlab地址修改后导致本地仓库的远程仓库失效 解决办法 直接修改本地的远程仓库地址 - 进入项目地址git remote -v 查看旧地址 - 更新指令 git remote set-u ...
- WPF学习笔记01_XAML之简介
简介 XAML (发音"zammel" 咋么儿),用于实例化.NET对象的标记语言,主要用于构造WPF的用户界面.类似html标记语言. 通过XAML,程序员可以用代码的方式对界面 ...
- Django(投票程序)
Django是一个web框架,python编写的. MTV模式 Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同 -M代表模型(Model ):负责 ...
- 【JavaWeb】i18n 国际化
i18n 国际化 什么是 i18n 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问. 希望相同的一个网站,不同人访问的时候 ...