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基础应用的更多相关文章

  1. JavaScript基础

    JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...

  2. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  3. 前端之JavaScript基础

    前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...

  4. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  5. Javascript基础回顾 之(三) 面向对象

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  6. Javascript基础回顾 之(二) 作用域

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  7. Javascript基础回顾 之(一) 类型

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  8. JavaScript 基础回顾——对象

    JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...

  9. javascript基础01

    javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...

  10. javascript基础02

    javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...

随机推荐

  1. UEBA 学术界研究现状——用户行为异常检测思路:序列挖掘prefixspan,HMM,LSTM/CNN,SVM异常检测,聚类CURE算法

    论文 技术分析<关于网络分层信息泄漏点快速检测仿真> "1.基于动态阈值的泄露点快速检测方法,采样Mallat算法对网络分层信息的离散采样数据进行离散小波变换;利用滑动窗口对该尺 ...

  2. Python中文问题

    读取数据库中文是?? 解决如下 一.python2版本需要在 文件的开头要加上编码设置来说明文件的编码  python3版本以上不需要 #encoding=utf-8 二.在连接数据的连接参数里加上字 ...

  3. Unity中UGUI鼠标穿透UI问题的解决方法

    不过在使用时需要先获取两个红色显示的变量,graphicRaycaster和eventSystem. 这两个变量分别对应的是Canvas中的GraphicRaycaster组件和创建UI时自动生成的“ ...

  4. JAVA概率实现--一篇最常见、最通用解决方案

    日常场景:某活动抽奖,控制各等奖的出现概率 比如控制A(中奖率):20%:B(获得优惠券率):30%:C(谢谢参与率):50% 下面以封装好在main()函数里,上代码(记得导入相应的包): publ ...

  5. Spring Data JPA 常用注解 @Query、@NamedQuery

    1.@Transient @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性:如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架 ...

  6. php网站速度性能优化(转)

    一个网站的访问打开速度至关重要,特别是首页的打开加载过慢是致命性的,本文介绍关于php网站性能优化方面的实战案例:淘宝首页加载速度优化实践 .想必很多人都已经看到了新版的淘宝首页,它与以往不太一样,这 ...

  7. es6模块与 commonJS规范的区别

    https://www.cnblogs.com/weblinda/p/6740833.html

  8. css布局与文档流的关系之float(浮动)

    所谓文档流,指元素在排版布局的过程中,元素会自动从左到右,从上到下的流式排列.脱离文档流呢,就是元素打乱了这个排列,或是从排版中拿走. 说到文档流呢,我们先来说一下元素,每个元素呢,都有display ...

  9. java android 捕获未处理异常

    1. 定义一个异常处理类 public class ExceptionHandler implements Thread.UncaughtExceptionHandler { public Excep ...

  10. redis的内存优化【转】

    Redis所有的数据都在内存中,而内存又是非常宝贵的资源.对于如何优化内存使用一直是Redis用户非常关注的问题.本文让我们深入到Redis细节中,学习内存优化的技巧.分为如下几个部分: 一.redi ...