201506150846_《JavaScript权威指南(第六版)——性能优化10条、小写转大写、过滤、函数》(P162-168)

一. 权威指南

1. 对于类数组对象,我们不能用数组方法,但是我们可以用 Function.call();

例如: Array.prototype.slice.call(arr,...);

Array.prototype.silice.call(arr,...);

Array.prototype.map.call(arr,...);

二. 性能优化10条

1.  var someId = document.getElementById(‘#someElem‘);  改成:  var docu = document, someId = docu.getElementById(‘#someElem‘);

2. 不要用with();

3. 小心使用闭包,尤其在循环中;

4. 在数值、变量、对象属性和数组元素4种访问方式中,前二者的速度显著优于后二者;

5. 不要在数组中挖掘的太深;

6. 用for();或do-while来代替 for-in;

7. 在循环时,将循环条件和循环变量合并起来;

8. 为HTML集合对象定义数组;(推荐使用《高性能JavaScript作者的写法》)

例如: function array(items) {

    try {

  return

  Aarray.prototype.concat.call(items);

}catch(ex) {

  var i = 0,

    len = items.length,

result = Array(len);

      while(i < len) {

result[i] = items[i];

      i++;

}

    return result;

  }

}

var docu = document;

var divs = array(docu.getElementByTagName(‘div‘));

  for(var i =0; i < divs.length;i++) {

  var myDiv = docu.creatElement("div");

docu.appendChild("myDiv ");

}

9. 不要碰Dom !

crateAttribute(name);       

createComment(text);       

createDocumentFragment(); (推荐用法)  

createElement(tagname);     

createTextNode(text);

10. 修改css类而非样式

三. 小写转大写

例如:

var str = [‘a‘, ‘p‘, ‘p‘, ‘l‘, ‘e‘, ‘s‘];

Array.map = Array.map || function(a,sep) {return Array.prototype.map.call(a,sep)};
var newStr = Array.map(str,function(elem){return elem.toUpperCase()});
console.log(newStr);

四. 过滤

例如:

var s = "fsdgnxvhdzfgtrxzcsdightmjtioyujvdgs";
var newS = Array.prototype.join.call(s," ");

console.log(newS);  //f s d g n x v h d z f g t r x z c s d i g h t m j t i o y u j v d g s

var lastestS = Array.prototype.filter.call(newS,function(elem){return elem.match(/[^aeiou]/);}).join("");

console.log(lastestS);  //fsdgnxvhdzfgtrxzcsdghtmjtyjvdgs

注意:字符串是不变的,不可修改的(比较特殊),使用push()、sort()、reverse()方法会修改数组,但是对字符串无效!!

五. 函数

1. 初始化一个对象的函数成为构造函数(constructor)。

2. 定义函数有两种方式:a. 定义语句  b. 表达式

3.  例1:遍历对象属性名和属性

var object = {‘a‘ : ‘3‘,‘str‘ : ‘hello‘,‘funcion‘ : ‘fn‘,‘b‘ : ‘0.618‘};

  function printProps(obj) {for(var p in obj)console.log(p + " : " + obj[p] + "\n")};

   printProps(object);   //

//a : 3

// str : hello

// funcion : fn

// b : 0.618

例2:计算两个坐标简的距离

function distance(x1,x2,y1,y2) {

  var dx = x2-x1;

var dy = y2-y1;

  return Math.sqrt(dx*dx + dy*dy);

};

distance(0,0,2.8,55); //0?

例3:阶乘

function factorial(n) {

if(n <= 1){

return 1;

  }else{

return

  n*factorial(n-1)

  }

};

factorial(4);  //24

4. 函数的名称将是函数内部的一个局部变量;

5. 没有返回值的函数有时候成为“过程”;

6. 注意:x可以访问a,b!!

例如:

function fn_a(a,b){

        function fn_b(x) {

    return x*x;

}

return Math.sqrt(fn_b(a) + fn_b(b));

}

7. 函数表达式可以出现在JavaScript代码的任何地方

六.函数调用

1. 作为函数调用、作为方法调用,作为构造函数调用、call()和apply()间接调用;

2.

时间: 2024-10-11 00:24:53

201506150846_《JavaScript权威指南(第六版)——性能优化10条、小写转大写、过滤、函数》(P162-168)的相关文章

JS 语言核心(JavaScript权威指南第六版)(阅读笔记)

前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢参悟,在这之前需要做的是能够运用它来开发,那么了解一些基础特性非常有必要,通常这些特性是需要经验积累,从各种坑中累计出来,但是还有一种看似很笨却很有效的学习方法.那就是将别人的经验记录下来,有事没事都拿出来看看,集合开发中的经验,这会非常有效. 调试工具 firebug

《JavaScript权威指南(第六版)》.(美)David.Flanagan.中文扫描版.pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是程序员学习核心JavaScript语言和由Web浏览器定义的javascript API的指南和综合参考手册. 第6版涵盖HTML 5和ECMAScript 5.很多章节完全重写,以便与时俱进,紧跟当今的最佳Web开发实践.本书新增章节描述了jQuery和服务器端JavaScript. 本书适合那些希望学习Web编程语言的初.中级程序员和希望精通JavaScript的JavaScript程序员阅读. 作者简介  · · · · · ·

Note | javascript权威指南[第六版] 第2章:词法结构

语法结构规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分隔等规则.本章用很短的篇幅来介绍JavaScript的词法结构. 2.1.字符集 JavaScript程序是用Unicode字符集编写的.Unicode是ASCII和Latin-1的超集,并支持地球上几乎所有在用的语言. 2.1.1.区分大小写   JavaScript是区分大小写的语言.也就是说,关键字.变量.函数名和所有的标识符(identifier)都必须采取一致的大小写形式.但需要注意的是,HTML并不区分大小写(尽管

javascript权威指南第六版学习

第二章 语法结构 2.1 字符集 什么是字符集?各种字符集什么关系?unicode,utf-8是什么关系? 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集(Characterset)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集.GB2312字符集.BIG5字符集.GB18030字符集.Unicode字符集等.http://baike.sogou.com/v291629.htm 各种字符集的出

【读书笔记--cookie】JavaScript权威指南 第六版

遇到一些问题需要用cookie处理,正好读了一下犀牛书关于cookie的介绍,整理了一些笔记. cookie是指web浏览器存储的少量数据,同时它是与具体的web页面或者站点相关的. cookie数据会自动在web浏览器和web服务器之间传输,因此服务器端脚本就可以读.写存储在客户端的cookie值.在JavaScript中,cookie用于保存状态以及能够为web浏览器提供一种身份识别机制. 但是在JavaScript中使用cookie不会采用任何加密机制,因此它们是不安全的.但是,通过htt

读JavaScript权威指南(第六版)笔记(第五章)

语句 表达式在JavaScript中是短语,那么语句就是JavaScript整句或命令.用句号作结尾来分隔语句.表达式计算出一个值,但语句用来执行以使某件事发生. 5.2复合语句和空语句 复合语句:用花括号把多条语句括起来形成符合语句. { x = Math.PI; cx = Math.cos(x); ................... } // 第一,语句块的结尾不需要分号 //第二,语句块中的行都有缩进 空语句:包含0条语句的语句.空语句就一个分号  //  : JavaScript解释

第六章 对象-javaScript权威指南第六版(三)

6.3 删除内容 delete运算符可以删除对象的属性. delete运算符只能删除自有属性,不能删除继承属性. delete表达式删除成功或没有任何副作用时,它返回true. 6.4 检测属性 用in\hasOwnProperty\propertyIsEnumberable\!== in 对于对象的自有属性或继承属性中包含有这个属性的返回true. hasOwnProperty方法用来检测 给定的名字是否是对象的自有属性 propertyIsEnumerable()是hasOwnPropert

又发现《JavaScript权威指南 第六版》一处错误

pdf版本,英文版第158页, var isArray = Function.isArray || function(o) { return typeof o === "object" && Object.prototype.toString.call(o) === "[object Array]"; }; return typeof o === "object" && Object.prototype.toStr

我发现的《JavaScript权威指南 第六版》一书中的错误

错误一: 错误二: 错误三: join 等方法是定义在Array.prototype上的,所以文中出现Array.join()是不对的.

JavaScript权威指南(第六版).中文版 网盘下载

下载地址:https://u18103887.ctfile.com/fs/18103887-335537335 下载地址:https://u18103887.ctfile.com/fs/18103887-335537335 原文地址:https://www.cnblogs.com/wuyb123/p/10367522.html