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. WebApi 全局使用filter

    先上代码: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // ...

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

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

  3. linux远程管理常用命令

    目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 01. 关机/重启 序号 命令 对应英文 作用 01 shutdown 选项 时 ...

  4. js的去重

    1.ES6 : set 注set的坑: 类数组转为数组,ES6提供了Array.from的方式,但在ES5中,类数组可以通过[].sclice.call(likeArr)转换,但对set无效 如:va ...

  5. servlet运行“/*”引起的java.lang.StackOverflowError

    <servlet> <servlet-name>login</servlet-name> <servlet-class>com.jd.login.UI. ...

  6. shell中获取时间

    获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...

  7. ui自动化:python+appium----环境搭建

    前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...

  8. L333 Should You Listen to Music While You Work?

    Should You Listen to Music While You Work? "Whistle while you work" is classic advice, str ...

  9. python爬虫出现的状态码

    1.200 --- 一切正常访问 2.301 --- 重定向新的url,永久性的 3.302 --- 重定向到临时url 4.304 --- 请求的资源未更新 5.400 --- 非法请求 6.401 ...

  10. ES6 用Promise对象实现的 Ajax 操作

    下面是一个用Promise对象实现的 Ajax 操作的例子. const getJSON = function(url) { const promise = new Promise(function( ...