JavaScript基础应用
1.实现字符串的反向输出
var s="abc"
s.split('').reverse().join('') -----> "cab"
知识点: String split()--> Array reverse() && join() --> String
2.Call和Apply用法及区别
都是实现将函数绑定到另一个对象上去执行,传参数列表类型不同。
F.apply(thisArg, [argArray] )
thisArg将代替F中的this对象,可以用来实现JS继承。
var A = {
content:1,
getContent: function(){
console.log(this.content)
}
}
A.getContent(); ==>1
var B = A.getContent;
B(); ===>undefined //因为this ->B B没有content变量
如何实现B()输出1? B.apply(A,null);//A将代替B中的this对象 this->A so 1
3.注意this变量的指向
function main(){
a = 1;
var a = 2;
this.a = 3;
}
main.a = 4;
main.prototype.a = 5;
var h = new main(); //当main被当成构造函数时,main()中的this指向新对象
console.log(main.a); ===>4 //this指向window
console.log(a); ===>3
console.log(this.a); ===>3
console.log(h.a); ===>3 //this指向h
delete h.a;
console.log(h.a); ===>5 //删掉对象属性后,会到原型里面去找
this的工作原理:
1.全局范围 this -->全局对象window
2.函数调用 this -->全局对象
3.方法调用 this -->当前调用对象
4.new foo(); 调用构造函数,this指向新创建的对象
5.call,apply this指向第一个参数对象
函数声明与变量声明会被javascript引擎隐式提升到当前作用域的顶部,但是只提升名称,不会提升赋值部分。
4.局部变量和全局变量
尽量使用局部变量,不用全局变量
(1)JS解析是从里到外,在效率上,局部变量会被优先访问到
(2)资源利用上来说,局部变量使用完成后会被释放,全局变量会耗费系统资源
如果在函数外部需要访问局部变量,肿么办?
这里就需要引入闭包。下面是一个简单的闭包例子:
function A(){
var a =1;
var B = function(){
return a++;
}
return B();
}
在函数外部:
var c = A(); ===> 1 c的值就是局部变量a的值
实现依次调用输出1,2,3...
闭包的优劣:
(1)定义内部变量,避免变量应用混论冲突
(2)但是需要在内存中维持一个变量,不会被释放,GC不会主动回收,会一直占用内存,如需释放,需要手动置值为null
5.Array 的 sort方法使用 传入排序函数 参数是 Function
var myArray = [1,'a', 'b', 3, 4, c]; //实现数字前字母后的输出
function compare(var1, var2){
if(isNaN(val1)){
return 1;
}else if(isNaN(val2)){
return -1;
}else{
return 0;
}
}
myArray.sort(compare); ===> [1, 3, 4, 'a', 'b', 'c']
6.js的基本数据类型和引用类型
基本类型:Number, Boolean, Null, Undefined, String
引用类型:Object, Function, Array, Date
js中的比较 用“===”
(1)Number 与String比较,String会转为Number
(2)Boolean与其他任何类型比较,Boolean都会转为Number
(3)Number/String与Object比较,都会转为Object类型
其他类型转为Boolean类型的规则:
1.undefined,null -> false
2.Boolean 只能作为布尔值
3.Number 0/NaN -> false,其他true
4.String ''->false,其他true
5.Object ->true
7.hasOwnProperty函数
这是唯一一个处理属性不查找原型链的函数,可以用来判断一个对象是否包含自定义属性而不是原型链上的属性
for(var i in foo){
if(foo.hasOwnProperty(i)){ //过滤掉那些非定义属性
console.log(i);
}
}
将值置为undefined/null都不会删除属性 delete 会真正删除属性
JavaScript基础应用的更多相关文章
- JavaScript基础
JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Javascript基础回顾 之(三) 面向对象
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- Javascript基础回顾 之(二) 作用域
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- Javascript基础回顾 之(一) 类型
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- JavaScript 基础回顾——对象
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
- javascript基础01
javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...
- javascript基础02
javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
随机推荐
- MapRdeuce&Yarn的工作机制(YarnChild是什么)
MapRdeuce&Yarn的工作机制 一幅图解决你所有的困惑 那天在集群中跑一个MapReduce的程序时,在机器上jps了一下发现了每台机器中有好多个YarnChild.困惑什么时Yarn ...
- zk observer 节点
zk 集群中有3种节点:leader,follower,observer,其中 observer 节点没有投票权,即它不参与选举和写请求的投票. 比较 Follower 和 Observer 的代码: ...
- learning makefile = and :=
- Vuejs的$watch实现原理
大概原理如下面代码所示: class Vue { //Vue对象 constructor (options) { this.$options=options; let data = this._dat ...
- 数组的高级API-sort
按升降序排列数组项.本身存在的问题:只能通过第一位排列.解决方法:通过回调函数进行规制设置. a - b 升序. b - a 降续. 其内部运用了冒泡排序 <!DOCTYPE html> ...
- Hbuilder护眼主题分享
sublime还有webstorm有很多主题,但是Hbuilder就相对较少,或者直接说基本没什么主题,在网上搜索了很久也很少有Hbuilder的主题分享,于是就自己取色调了一个仿的护眼主题来分享一下 ...
- Keras学习笔记(完结)
使用Keras中文文档学习 基本概念 Keras的核心数据结构是模型,也就是一种组织网络层的方式,最主要的是序贯模型(Sequential).创建好一个模型后就可以用add()向里面添加层.模型搭建完 ...
- Ubuntu Desktop 编译 ffmpeg (简略的写写)
关于ffmpeg FFmpeg是一個自由軟體,可以執行音訊和視訊多種格式的錄影.轉檔.串流功能,包含了libavcodec——這是一個用於多個專案中音訊和視訊的解碼器函式庫,以及libavformat ...
- Python全栈之路---数据类型—字符串
字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) & ...
- 如何在Linux系统下挂载光盘
工具/原料 Linux 方法/步骤 找到光盘的完整路径名.在命令行输入:ls -l /dev | grep cdrom. 可以看到光盘的名字叫做:cdrom1.然后在命令行执行: mount /d ...