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. STL 小白学习(3) vector

    #include <iostream> using namespace std; #include <vector> void printVector(vector<in ...

  2. python scrapy同时执行spiders多个爬虫

    假设spiders文件夹下多个文件: name.py     name = 'name' name1.py    name = 'name1' name2.py    name = 'name2' . ...

  3. 网站压力测试工具http_load的安装与使用

    一.安装 1.下载地址:http://www.acme.com/software/http_load/http_load-09Mar2016.tar.gz 2.解压后进入目录,执行make & ...

  4. LeetCode刷题 fIRST MISSING POSITIVE

    Given an unsorted integer array,find missing postive integer. For example , Given [1,2,0]return 3, a ...

  5. 笨办法29IF语句

    people = 20 cats = 30 dogs = 15 if people < cats: print "Too many cats! The world is doomed! ...

  6. centos7.3 64位 安装git

    1.安装编译git时需要的包 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # yum ins ...

  7. SpringBoot(四)thymeleaf+MyBatis+MySql

    接着上一节 1.第一步:在pom文件中添加 <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.bo ...

  8. A New Function(LightOJ 1098)积性函数前缀和的应用

    题意:要求对于1~n,每个数的约数(不包括1和其本身)的和. 题解:由于题目数据有2*10^9之大,因而不能直接暴力.需要考虑积性函数的特性,由于必定有重复的约数出现,因而可以对重复约数所在的区间进行 ...

  9. #学习笔记#jsp

    jsp简介 JSP(Java Server Pages)是JavaWeb服务器端的动态资源,它与html页面的作用是相同的,显示数据和获取数据. jsp: 作为请求发起页面,例如显示表单.超链接. : ...

  10. 【java多线程】队列系统之说说队列Queue

    转载:http://benjaminwhx.com/2018/05/05/%E8%AF%B4%E8%AF%B4%E9%98%9F%E5%88%97Queue/ 1.简介 Queue(队列):一种特殊的 ...