JS高级部分(个人认为)

首先,我们要知道JS的数据类型主要分为两大类:

1.原始数据类型:

1)boolean

2)string

3)number

4)null

5)undefined

2.引用数据类型:

1)宿主       -->Bom,Dom

2)内置       -->Globe Math

3)原生       -->function,array,object...

原始型数据类型和引用型数据类型的差距:
两者差距在于对其的储存方式不同,原始型数据类型是用一个存储点来储存,所以传递过去的直接是数据的内容,而引用型数据类型是用一排连续的储存点来进行储存,不能直接一次传送过去所有的内容,是按照顺序一个接一个的进行存储,所以如果在传递过程中发生了数据的改变,那么被传递的一方也会跟着改变~

我们知道,如果要在一个函数中使用一个定义的变量,要么是在全局中定义,要么在该函数中定义,如果该变量在另一个函数中的话,就比较麻烦了(至少以前我是不知道该怎么做的)。

所以我们可以用一种闭包的方法来实现,下面是该方法的基本用法:

function main(){

  var i=0;

  var out=function(){

    i++;

    console.log(i);

  }

  return out;

}

var bpack=show();

bpack();

运行的结果是每一次运行就会实现i++的效果,而并不会每次都让i=0。也就是说,当我们执行函数

bpack()的时候,可以将i独立出来,并不受main()里面i的影响。就可以实现在两个函数中相互调用变量。

从例子中,我们可以看出,闭包的原理就是在一个函数中return另一个函数,然后再调用主函数,那么就可以使用其中的变量了。

匿名函数:其实也是闭包的一种。

(function(i){console.log(i)})(x);

结果为x。

函数的继承:

function game(){

  this.gtime=100;

  this.action=function(){};

}

function gamer(){

  this.action=function(){

    console.log("run")

  }

}

gamer.prototype=new game();

var gamer1=new gamer();

console.log(gamer1);

gamer1.action();

原型链:

new gamer()先找到原型(如果有则执行,没有就不执行),执行原型里面的代码,再找原型的原型,也就是最大的object对象...再执行自己的代码。

数据运算:

加好两端如果有字符串,就按照字符串拼接处理,如果没有就按照算数运算处理。

减号两端都是按照算数运算处理。

时间: 2024-10-13 14:24:49

JS高级部分(个人认为)的相关文章

<JS高级程序设计3>_PART3

1.ECMAScript中所有数都以IEEE-754 64位格式存储,但位操作符不直接操作64位的值.是先64位转换成32位的整数,再操作,得到结果再转成64位. 2.首位是符号位.之后的31位代表整数的值. 3.用toString(2)打印二进制,得到的是被处理过的二进制. 4.按位非(NOT)~,数转成二进制,取反.相当于把操作数先变负再-1; 5.按位与(AND)&,两个数的二进制,有一个0结果就是0,两个都是1才为1. 6.按位或(OR)|,有一个1结果为1,都是0才为0. 7.按位异或

惰性函数——JS高级

原文地址:http://www.cnblogs.com/galenyip/p/4613430.html 我们先来看一下js的异步提交. XHR我们在原生的时候常常用到,因为常用到,我们更多把封装到了工具库中 先看下他最常用的实现 1 // 旧方法 2 3 function createXHR() { 4 var xhr; 5 try{ 6 xhr = new XMLHttpRequest(); 7 }catch(e) { 8 handleErr(e); 9 10 try { 11 xhr = n

<JS高级程序设计3>_PART4

1.基本数据类型:Undefined,null,Number,String,Boolean.引用数据类型:保存在内存中的对象. 2.JS不允许直接访问内存中的位置,不能直接操作对象的内存空间.所以操作对象时,实际上是操作的对象的引用,而不是实际的对象. 3. var num1 = 1; var num2 = num1; 一个基本类型的变量向另一个赋值时,执行了复制操作,两个变量互不影响. var obj1 = new Object(); var obj2 = obj1; obj1.age = 2

JS高级特性

一.JavaScript的同源策略 参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Same_origin_policy_for_JavaScript 同源策略限制了一个源(origin)中加载文本或脚本与来自其它源(origin)中资源的交互方式. 同源定义 如果两个页面拥有相同的协议(protocol),端口(如果指定),和主机,那么这两个页面就属于同一个源(origin). 下表给出了相对http://store.c

JS高级前端开发群加群说明

JS高级前端开发群加群说明 一.文章背景: 二. 高级群: 三. 加入方式: 四. 说明: 一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在“前端开发”关键字搜索结果第一名.当然取得这样的成绩或这样一个结果也是情理之中,一方面来说,提倡的各种交流沟通方法大部分是正确有效或被大家认可的,另外一方面说,这么多人聚在一起,跟大伙的参与分享是分不开的,尤其是各群的管理,是我们的灵魂精神的支柱.另外在国内行业前进的道路上,尽自己的绵薄之力帮助他人,引领氛围,进而影响行业,也是略感欣慰.有时候精

读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺乏必要的绘图驱动程序,则浏览器即使支持了也没用   <canvas> var drawing = document.getElementById("drawing"); if( drawing.getContext ){ drawing.getContext("2d"

JS高级——闭包

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascrip

js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定

js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作.所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名.作为事件处理程序的函数和一个布尔值.最有这个布尔值参数是true,表示在捕获阶段调用事件处理程序:如果是false,表示在冒泡阶段调用事件处理程序. 要在按钮上为click事件添加事件处

PHP菜鸟学习历程-1 JS高级-34-昨天内容回顾

JS高级-34-昨天内容回顾     时间:2015-5-11 1.DOM获取元素节点 document.getElenmentById(id 属性值)                                   具体元素节点对象 document.getElenmentsByTagName(tag 标签名称 div ul li)        数组列表 document.getElenmentsByName(Name 属性值)                       数组列表 2.

JS高级之this是谁?

1 <!-- 2 英语单词:checkout:收银台 refresh:刷新 3 const Index = () => import('/page/index.vue')//等于const Index = function a(){return import('/page/index.vue')} 4 5 js高级之this是谁? 6 this本质上就是调用了就指向谁,this在指向谁有以下4种情况: 7 --------------------------------------------