JavaScript学习笔记-JavaScript概述

特点

具有面向对象能力的、解释性的程序语言
基于对象和事件驱动,并具有相对安全的客户端脚本语言
松散性:变量不必具有一个明确的类型
对象属性:对象把属性名映射为任意的属性值
继承机制:基于原型的继承机制
ECMA(欧洲计算机制造商协会)标准化:ECMAScript,ECMA-262

JavaScript核心

核心(ECMAScript)
文档对象模型(DOM):HTML中的树
浏览器对象模型(BOM):没有标准
ECMAScript组成:语法、类型、语句、关键字、保留字、操作符、对象

语法

区分大小写
标识符组成:字母、、$开头,其他字符为字母、数字、、$
字面量:{x:1, y:2}对象字面量表达式;[1, 2, 3, 4, 5]数组字面量表达式
声明变量:var box; var box = 100; 声明变量没有初始化时值为undefined
var box = 100;和box = 100;作用域不同

数据类型

5种简单数据类型:undefined、null、boolean、number、string
1种复杂数据类型:object
不支持自定义数据类型
typeof 获取变量类型
{}为空的对象,对象已创建,但没有东西;null为空对象,表示没有创建
var box = {};和var box = new Object();相同
typeof为操作符,而非函数
建议变量声明时初始化;var box = ""; var box = 0; var box = false; var box = null;
undefined派生于null,两者相等,但类型不同,所以 undefined == null true; undefined === null false
number类型:八进制0开头,16进制0x开头
单引号和双引号用于字符串时完全相同,但必须成对

运算符

===表示恒等,需要类型和值均相等才为true
逻辑运算&& || !

函数

JavaScript函数不支持重载

对象和数组

对象包含属性和方法
对象属性名可以加引号,与不加引号相同
数组中每个元素可以保存任何类型
数组也是object类型
toString()方法和valueOf()方法作用相同
数组拥有栈方法push()和pop(),后进先出
数组拥有队列方法push()和shift(),先进先出,unshift()方法可为数组前端添加元素
reverse()逆向排序,sort()正向排序,可以传排序函数作为参数
splice()方法可以支持删除、增加、替换元素

函数类型

函数实际上是对象
函数可以作为参数传递给函数
函数内部有两个特殊的对象arguments和this
arguments包含了传入函数的所有参数
arguments.callee指向函数本身
函数有两个属性length和prototype

变量、作用域和内存

变量类型:基本类型(放在栈)和引用类型(放在堆中的对象)
所有函数参数都是按值传递,不会按引用传递
数组、对象、正则表达式都是对象
instanceof Array、instanceof Object、instanceof RegExp
全局变量和局部变量
没有if/for类块级作用域
函数中带var为局部,不带var为全局,不建议不使用var来初始化变量
JavaScript具有自动垃圾收集机制
一旦不再使用,将其设置为null,加速垃圾回收

内置对象

Global和Math
全局变量和全局函数,均属于Global对象
eval方法执行字符串代码

面向对象与原型

JavaScript没有类的概念,只有对象
工厂函数可以解决多个对象重复实例化的问题
可以采用构造函数创建特定对象,构造函数类似其他语言中的类
构造函数:第一个字母必须大写;必须new 构造函数
构造函数用普通函数方式调用一般无效,必须使用new运算符
每个函数都有一个prototype属性,它是个对象
JavaScript继承依靠原型链实现

function Box() {
    this.name = "Lee";
}

function Desk() {
    this.age = 100;
}
Desk.prototype = new Box();

var desk = new Desk();
console.log(desk.age);
console.log(desk.name);

匿名函数和闭包

闭包是指有权访问另一个函数作用域中的局部变量的函数
优点同时是缺点:可以把局部变量驻留在内存中,可以避免使用全局变量

function box() {
    var age = 100;
    return function() {
        age ++;
        return age;
    }
}

var b = box();
console.log(b());
console.log(b());

因会更加消耗内存,建议在非常必要时使用闭包
闭包不属于对象的属性或方法,在运行时this指向window

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容