前端面试准备笔记之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 高级程序设计 闭包其实可以理解为是一个函数 简单理 ...
随机推荐
- 初识SylixOs
SylixOS 概述 SylixOS 是一款大型嵌入式实时操作系统,诞生于 2006 年,起初它只是一个小型多任务调度器,经过多年开发,SylixOS 目前已经成为一个功能完善.性能卓越.可靠稳定的嵌 ...
- QEMU/KVM网络模式(二)——NAT
在QEMU/KVM中,默认使用IP伪装的方式去实现NAT,而不是用SNAT或DNAT的方式. 1.安装软件包 # yum -y install bridge-utils iptables dnsmas ...
- Python小白干货宝典:sorted()函数:列表元素排序
定义: sorted() 函数对所有可迭代的对象进行排序操作. 内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作. 语法: sorted 语法: sorted(i ...
- LINQ to Entities 不识别方法“System.String ToString(“yyyy-MM-dd”)”
将Queryable转化为IEnumerable或者直接Tolist()
- Core3.0发布到IIS的流程
前言 参考链接 https://www.cnblogs.com/wutongjun/p/11981798.html 在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安 ...
- 7.自定义ViewGroup-下滑抽屉
1.效果 2.思路 分析效果: 1.布局分为两部分,后面部分,前面部分,默认状态后面被挡住: 2.后面不可以滑动,前面可以滑动: 3.如果前面的布局本身是可以滑动的,那么当前面布局滑动到第一个时,后面 ...
- java中使用IO流复制文件
public class TestIO { public static void main(String[] args) { // TODO Auto-generated method stub tr ...
- 【老孟Flutter】Stateful 组件的生命周期
老孟导读:关于生命周期的文章共有2篇,第一篇是介绍 Flutter 中Stateful 组件的生命周期. 博客地址:http://laomengit.com/blog/20201227/Statefu ...
- MM-合作伙伴确定过程
第一步:物料管理---采购---合作伙伴确定---合作伙伴角色---定义合作伙伴角色. 第二步:物料管理---采购---合作伙伴确定---合作伙伴角色---定义每个科目组适合的合作伙伴角色. 第三步: ...
- Qt学习笔记-中文乱码-QtWebkit显示网页乱码的问题QFont::setPixelSize: Pixel size <= 0 (0)
在使用webkit的时候显示中文乱码,同时出现警告 QFont::setPixelSize: Pixel size <= 0 (0) 后来发现是插件的问题. 将安装目录的plugin/codec ...