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. python - 基础知识,if语句

    一.认识计算机 计算机是一个高度集成的电子电路. 组成:CPU(中央处理器).内存 .主板 .电源(心脏) .显示器  .键盘  .鼠标  .显卡(NAVID,AMD) .硬盘 操作系统 :Windo ...

  2. ES5和ES6那些你必须知道的事儿(一)

    ES5和ES6那些你必须知道的事儿 ES5新增的东西 一.数组方法 1.forEach     用途:遍历,循环 对于空数组不会执行回调函数 //用法 array.forEach( function( ...

  3. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer 一.前言 开始MapServer用 ...

  4. learning makefile static model

  5. Spring Security Oauth2 单点登录案例实现和执行流程剖析

    Spring Security Oauth2 OAuth是一个关于授权的开放网络标准,在全世界得到的广泛的应用,目前是2.0的版本.OAuth2在“客户端”与“服务提供商”之间,设置了一个授权层(au ...

  6. Mac配置系统环境变量

    最近在配置flutter的环境变量,使用: export PATH=$PATH:`pwd`/flutter/bin 然后一段时间之后发现环境变量莫名其妙的就消失了,这里有一个大坑! !!!!Mac 系 ...

  7. nginx搭建以及其配置文件

    nginx搭建: 参考link:https://blog.csdn.net/wxyjuly/article/details/79443432 nginx配置文件详解: 参考link:https://w ...

  8. Python随笔--函数(参数)

    函数文档: 关键字参数: 默认参数:定义了默认值的参数 收集参数(可变参数):

  9. 第九节 java7JDK的常用封装类型

    一.Java Scanner类 /初始化一个 scanner 对象. Scanner scanner = new Scanner(System.in); //判断语法 boolean b = scan ...

  10. Alpha冲刺8

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10023260.html 作业博客:https://edu.cnblogs.com/campus ...