前言:

    因为工作需要,所以开始主攻前台JS方面的技术。在以前的工作中,使用过这门脚本语言。但是都是比较凌乱的,用到什么学什么,只是为了实现业务,而去使用。

    不会考虑到代码优化,封装对象等。今次特意借了这本《javascript 高级程序设计》 ,在每个晚上抽出一个小时来看这本纸质书,系统的学习这门语言。

    本文中摘录的都是一些在阅读中,感觉比较重要的信息。如果文中出现差错,欢迎园友拍砖。 


摘录:    

数据类型

 
undefined  使用var声明 但未对其初始化
 
Null null值  
 
Boolean  布尔型
 
Number 整数 浮点  parseInt("10",2)  parseFloat
 
String  字符串   toString()
 
Object 对象 :
 
构造函数  new Object()   
 
hasOwnProperty(propertyName) 实例中是否有给定的属性
 
isPrototypeof(object) 传入对象是否是另一个对象的原型
 
propertyIsEnumerable 
 
toString()
 
valueof()
 
/////////////////////////////////////////////////////////////
 
typeof() 函数结果(undefined boolean  string  number object function)
 
 
 
操作符
 
for-in:精确迭代语句,枚举对象属性
 
for(var propName in object){
 
     alert(propName):
}
 
 
函数
 
参数名:非必须 有内置参数数组 arguments
 
function say(){
 
     alert(argumenyt[0+" "+argument[1]);
}
 
say("jon","22");
 
变量 作用域和内存

 
基本类型:保存在栈内存的简单数据段,该值被完全保存在内存中       typeof()
 
引用类型:堆内存中的对象,变量中保存的只是指针 指向该内存中的值   object instanceof array   
 
 
垃圾回收机制
 
标记清除
 
引用计数
 
 
引用类型
 
var person = new Object()
person.name = "lili";
person.age="12";
 
var person = {name:"lili",agr:12 };
 
array类型

 
var color = new Array(3); //创建出长度为3 的数组
 
var color = new Array("red","yellow","blue");
 
var color = ["red","yellow","blue"];
 
数组下的toString()  toLocaleString()  该两个方法默认会调用数组下每项的toString()方法
 
若toLocaleString()被重写,则调用重写后的toLocaleString()
 
 
数组下的push() 及pop()方法。
 
push() 将项推入数组中,并返回数组的count
 
pop() 取到数组的最后一项  count值被减少
 
 
 
数组重排序reserse() sort()
 
reserse()  将数组进行反转
 
sort() 调用每项的toString()方法  然后按照升序排列数组
 
 
 
concat()  将数组进行合并
 

引用类型:函数内部属性

 
函数内部有两个特殊对象 arguments 和 this 
 
arguments 包含了函数中所有的传入参数,该对象包含了callee属性,指向拥有arguments的函数
 
例如例子 
function as(num){
 
     if(num>1){
 
          as(num -1);
     }else{
 
          break;
     }
          
}
可消除函数体与函数名的耦合度
 
function as(num){
 
     if(num>1){
 
          arguments.callee(num -1);
     }else{
 
          break;
     }
          
}
 
this 引用的是函数据以执行操作的对象 或者说函数在执行时的作用域
 
window.color = "red";
 
var o = {color:"blue"};
 
function sayColor(){
 
     alert(this.color);
}
 
sayColor();  red
 
o.sayColor = sayColor;
 
o.sayColor();  blue
 
 
函数属性和方法
 
ECMAscript 中的函数也是对象  因此函数也有属性和方法
 
每个函数包含了两个属性 
 
length:函数希望接受的命名参数的个数
 
prototype:
 
函数自带两个方法,可在特定作用域中调用函数

apply() :需要传入两个参数; 一个是函数运行的作用域。 另一个是传入参数的数组(or array or arguments对象)

call(); 一个是函数运行的作用域  而后剩下的参数是必须一一列举

此二者方法可以相同效果 可以根据实际参数来选择调用

而通过该函数的调用 可以扩充函数运行的作用域.实际上函数改变了this的值

window.color = "red";
   
    var o = {color :"blue"};
   
    function sayColor(){
   
           alert(this.color);
    }
   
   
    sayColor();   //red
   
    sayColor.call(this); //red  
   
    sayColor.call(window); //red
   
    sayColor.call(o); //blue

 
 
     内置对象

global对象 作为ECMAScript的终极对象,从任何角度看 都不存在。但是不属于任何其他对象的属性和方法  最终都是它的属性和方法
   
    isNaN()  isFinite()  parseInt()  parseFloat()
   
    1. 编码方法  
   
         encodeURI()   不会对本身属于URI的特殊字符进行编码

 
         encodeURIComponent() 会将对应编码替换所有非字母数字字符

 
     2.eval() 执行ECMAScript字符串
 
     eval("alert('hi')");  等价于 alert('hi')
 
     当解析器发现调用eval() 方法时 会将传入的参数 当成ECMAScript来解析 然后将执行结果插入到原位置
 
     通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,因为有执行环境相同的作用域。
 
 

 
 

阅读摘录《javascript 高级程序设计》01的更多相关文章

  1. <JavaScript>如何阅读《JavaScript高级程序设计》(一)

    题外话 最近在看<JavaScript高级程序设计>这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下..探究一下到底怎么读这本书.本书的内容好像只有到ES5...所以只能 ...

  2. 如何阅读《JavaScript高级程序设计》(一)

    题外话 最近在看<JavaScript高级程序设计>这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下..探究一下到底怎么读这本书.本书的内容好像只有到ES5...所以只能 ...

  3. 《Javascript高级程序设计》阅读记录(四):第五章 下

    这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅 ...

  4. 《Javascript高级程序设计》阅读记录(一):第二、三章

    <Javascript高级程序设计>阅读记录(一) 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释 ...

  5. 《Javascript高级程序设计》阅读记录(五):第六章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  6. 《Javascript高级程序设计》阅读记录(三):第五章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读< ...

  7. 《Javascript高级程序设计》阅读记录(二):第四章

    这个系列之前文字地址:http://www.cnblogs.com/qixinbo/p/6984374.html 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较 ...

  8. 《JavaScript高级程序设计》读书笔记--前言

    起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...

  9. 《Javascript高级程序设计》阅读记录(七):第七章

    <Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...

随机推荐

  1. 【原】命令行方式开启WIFI热点

    由于Wifi比较慢,可以使用笔记本(带无线网卡的电脑也可以) 开启无线网络,供手机使用.方法如下:   netsh wlan set hostednetwork mode=allow ssid=qa ...

  2. Android Studio -修改LogCat的颜色

    Android Studio -修改LogCat的颜色 author:Kang,Leo weibo:http://weibo.com/kangyi 效果图 设置 Preference->Edit ...

  3. angularJS获取json数据(实战)

    学习了这么多天的AngularJS,今天想从实战的角度和大家分享一个简单的Demo--用户查询系统,以巩固之前所学知识.功能需求需要满足两点 1.查询所有用户信息,并在前端展示 2.根据id查询用户信 ...

  4. python 04

    面向对象 __init__ 方法在类的一个对象被建立时, 马上运行. 这个方法可以用来对你的对象做一些你希望的初始化. python中所有的类成员(包括数据成员)都是公共的, 所有的方法都是有效的. ...

  5. Eclipse右下角一直提示Computing additional info解决办法

    今天不知道按了什么,发现Eclipse右下角一直提示computing additional info,打开progress,里面同时有好几条一样的信息,但是一直也执行不完,上网查找方案,发现原来是用 ...

  6. mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

  7. YYYY-mm-dd HH:MM:SS

    备忘:YYYY-mm-dd HH:MM:SS部分解释 d               月中的某一天.一位数的日期没有前导零.    dd             月中的某一天.一位数的日期有一个前导零 ...

  8. arm指令周期

    1.大部分算术运算和逻辑运算指令都是单周期的,例如加法.减法.位级运算和移位 2.乘法指令根据操作数位数的不同,从2-5个周期都有可能. 3.无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此 ...

  9. Access使用join进行多个表联合查询的问题

    Access是支持三表或三表以上的join查询的,但是要加括号,如果不加的话,会报错,括号的作用是决定join的顺序.例如: SELECT *FROM (aa LEFT JOIN bb ON aa.a ...

  10. Java_I/O输入输出_实现当用户输入姓名和密码时,将每一个姓名和密码加在文件中,如果用户输入done,就结束程序。

    import java.io.*; public class Example { static final int lineLength = 81; public static void main(S ...