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-Libvirt GUI 实现KVM 虚拟机 界面化管理

    一.KVM环境的搭建 1.安装VMware(略) 2.在VMware中安装Linux系统(略,Ubuntu16.04) 打开支持虚拟化 网络选择桥接模式 3.安装qemu apt-get instal ...

  2. 跟随我在oracle学习php(1)

    所有的web页面都由HTML(超文本标记语言)构成,每种浏览器都将代码转换成我们所看到的页面. 这是基本上是每个程序员写的第一个代码“hello world” 这是浏览器翻译后的结果 首先<&g ...

  3. angularjs checkbox

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. Aop理解 ioc理解

    AOP 把 [核心代码]和[非核心代码]分离 提高开发的效率 java设计模式: https://www.cnblogs.com/malihe/p/6891920.html N+1就是: 1:一条查询 ...

  5. [Oracle][RAC]Oracle RAC环境里打OCW上的个别Patch,然后Rollback,发现OCW也被Rollback掉了

    对于Oracle RAC来说,存在着DB层面的Patch,也存在着GI层面的Patch. 本文介绍的是,GI层面,打Patch----> rollback 的动作之后,原来的OCW被Rollba ...

  6. 隐藏WORDPRESS账户登录错误信息

    将下面的脚本添加到当前主题的functions.php文件中. function no_wordpress_errors(){  return 'Something is wrong!';}add_f ...

  7. 从零开始学Shell(二)

    $1,$2....${10},${11},[root@localhost cee]# cat p.sh #!/bin/bash#file_name:p.shecho $1 $2[root@localh ...

  8. C基础学习笔记

    1.C语言运算符优先级: 2.三种循环比较 while.do-while和for三种循环在具体的使用场合上是有区别的,如下: 1).在知道循环次数的情况下更适合使用for循环: 2).在不知道循环次数 ...

  9. red hat防火墙的开启与关闭及状态查看方法

    Redhat使用了SELinux来增强安全, 首先怎么查看防火墙的状态呢? a.可以通过如下命令查看iptables防火墙状态: chkconfig --list iptables b. selinu ...

  10. Python2入门(1)

    一.基础语法1 - 输出语句 print "hello world",print默认输出换行,如果需要实现不换行需在变量末尾加上逗号,; 2 - python合法标识符 3 - 字 ...