打开这本书,进入到javascript的世界。以前都是看各种视频,感觉什么收获也没有,反而弄得脑袋混乱,希望能够按照这本书的节奏掌握javascript这门语言,为我的前端学习打下基础。

学习前准备:web浏览器(F12用来唤醒和关闭firebug界面,ctrl+shift+j用来唤醒错误工作台,console.log()调试辅助)

本书分为4个部分:Javascript语言核心;客户端Javascript;Javascript核心参考;客户端Javascript参考。今天主要学了第一部分。主要收获简述:

前言

1: javascript语言核心 和 客户端javascript的简述

  和以往相比,这本书在最开始向我介绍了:

  (1)注释方法 : //所有在双斜杠后面的内容都属于注释

  (2)变量:var x=0;//变量是表示值的一个符号名字,用var关键字表示,通过等号赋值

  (3)数据类型:number bool object undefined null 等

  (4)对象:键值对(名==值)有属性,通过“.”或者“[]”来访问,就像各种检索目录一样,一级级的往下寻找。例如:

 var book={//等于号莫忘记
author:"fanfan",
name:"javascript",//不同属性之间用“,”分隔
buy:false
};
console.log(book.author);//获取book的author属性=》fanfan
console.log(book["name"]);//中括号里面的属性名称要加双引号
book.topic="study";//若book属性原本没有topic属性,这时候相当于添加了一个topic属性,并且值为study。
console.log(book.topic);
book.content={};//设置一个空的属性
console.log(book.content);

  (5)函数:是带有名称和参数的javascript代码段,可以多次调用

 var square=function(x){
return x*x;
};
square(4);

  (6)方法:当函数和对象合在一起的时候,就变成了方法。即当函数赋值给对象的属性,即为方法,所有的javascript对象都含有方法。

 var a=[];
a.push(1,2,3);//数组赋值push方法
a.reverse();//数组倒序
//我们也可以定义自己的方法,this关键字就是对定义方法的对象的引用
var points=[
{x:0,y:0},
{x:1,y:1}];
points.dist=function(){
var p1=this[0];
var p2=this[1];
var a=p2.x-p1.x;
var b=p2.y-p1.y;
return Math.sqrt(a*a+b*b);
}
points.dist();

  (7)控制语句:条件判断和循环

  (8)面向对象:构造--》实例化--》附加方法--》继承

//构造函数,无return,初始化一个新的Point
function Point(x,y){
this.x=x;
this.y=y;
}
//new一个Point点实例
var p=new Point(1,1);
//给Point附上一个r方法
Point.prototype.r=function(){
return Math.sqrt(this.x*this.x+this.y*this.y);
};
//调用p的r方法,继承
p.r();

  (9)客户端的javascript。主要是操作dom等。

    示例:基于javascript的贷款计算器。(代码下载:http://yun.baidu.com/share/link?shareid=538259612&uk=3811305747

  • 如何在文档中查找元素  var amount=document.getElementById("amount");
  • 如何通过表单input元素来获取用户的输入数据  var principal = parseFloat(amount.value);
  • 如何通过文档元素来设置html内容  payment.innerHTML = monthly.toFixed(2);
  • 如何将数据存储在浏览器中  
     save(amount.value, apr.value, years.value, zipcode.value);
    function save(amount, apr, years, zipcode) {
    if (window.localStorage) { // Only do this if the browser supports it
    localStorage.loan_amount = amount;
    localStorage.loan_apr = apr;
    localStorage.loan_years = years;
    localStorage.loan_zipcode = zipcode;
    }
    }
  • 如何使用脚本发送http请求 
     function getLenders(amount, apr, years, zipcode) {
    // If the browser does not support the XMLHttpRequest object, do nothing
    if (!window.XMLHttpRequest) return; // Find the element to display the list of lenders in
    var ad = document.getElementById("lenders");
    if (!ad) return; // Quit if no spot for output // Encode the user's input as query parameters in a URL
    var url = "getLenders.php" + // Service url plus
    "?amt=" + encodeURIComponent(amount) + // user data in query string
    "&apr=" + encodeURIComponent(apr) +
    "&yrs=" + encodeURIComponent(years) +
    "&zip=" + encodeURIComponent(zipcode); // Fetch the contents of that URL using the XMLHttpRequest object
    var req = new XMLHttpRequest(); // Begin a new request
    req.open("GET", url); // An HTTP GET request for the url
    req.send(null); // Send the request with no body // Before returning, register an event handler function that will be called
    // at some later time when the HTTP server's response arrives. This kind of
    // asynchronous programming is very common in client-side JavaScript.
    req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
    // If we get here, we got a complete valid HTTP response
    var response = req.responseText; // HTTP response as a string
    var lenders = JSON.parse(response); // Parse it to a JS array // Convert the array of lender objects to a string of HTML
    var list = "";
    for (var i = 0; i < lenders.length; i++) {
    list += "<li><a href='" + lenders[i].url + "'>" +
    lenders[i].name + "</a>";
    } // Display the HTML in the element from above.
    ad.innerHTML = "<ul>" + list + "</ul>";
    }
    }
    }
  • 如何利用<canvas>元素绘图   
     var g = graph.getContext("2d");
    g.moveTo(paymentToX(0), amountToY(0)); // Start at lower left
    g.lineTo(paymentToX(payments), // Draw to upper right
    amountToY(monthly * payments));
    g.lineTo(paymentToX(payments), amountToY(0)); // Down to lower right
    g.closePath(); // And back to start
    g.fillStyle = "#f88"; // Light red
    g.fill(); // Fill the triangle
    g.font = "bold 12px sans-serif"; // Define a font
    g.fillText("Total Interest Payments", 20, 20);

     

总结:要清楚的明白对象、函数、方法三者之间的关系。客户端的例子基本能看懂,但是自己写不出来。主要是localStorage和http请求无法自己独立完成。以后会回来复习默写的。

javascript权威指南学习笔记1的更多相关文章

  1. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  2. JavaScript权威指南学习笔记6

    这两天主要翻看了书中的第18-22章,重点看了第17章:事件化处理,其它几章节主要是翻了下书知道有相关的概念,没有真正理解其中的内容,或者没有考虑究竟如何能把里面的内容应用到实际的项目中.说的讽刺一点 ...

  3. JavaScript权威指南学习笔记4

    今天看了第9.10.11章,感觉收获最大还是正则表达式那章节,不过这些不用太多脑子思考,问题用到了直接查书就可以了,下面分别总结一下: 第9章类和模块:分9节,前面8节都是在讲类相关的知识,最后一节讲 ...

  4. Javascript权威指南学习笔记

    第二章:词法结构 ;function a(){alert(2)};//前面的分号保证正确地语句解析 第三章:类型.值和变量 基本概念: 1.数据类型---能够表示并操作的值的类型叫做数据类型. 2.变 ...

  5. javascript权威指南学习笔记3

    今天看到第四章,记录一下其中的几个点,俗话说:好记性不如烂笔头嘛. 4.9   in运算符和instanceof运算符 in运算符希望它的左操作数是一个字符串或可以转化为字符串,希望它的右操作数是一个 ...

  6. javascript权威指南学习笔记2

    Javascript语言核心(2~12章) 第三章:类型.值.变量 1.数字: overflow(Infinity, -Infinity).underflow(+0,-0) 非数字值:它和任何值都不相 ...

  7. JavaScript权威指南学习笔记5

    下午在杭图回去前看了书中第二部分的13-17章,看的很粗,感觉大部分东西自己已经知道或者平时开发中不会用到,很多章节只是简单的翻了一下,没有仔细思考里面说到的道理,下面对各章节简单的记录下. 第13章 ...

  8. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  9. CSS权威指南学习笔记系列(1)CSS和文档

    题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...

随机推荐

  1. 原生JavaScript拖动div兼容多种浏览器

    说句题外话,虽然博客园嵌入式氛围不行,Web前端氛围还是很好的.我又从 chinaunix 回来了. <html> <head> <script type="t ...

  2. 暴力求解——除法 Division,UVa 725

    Description Write a program that finds and displays all pairs of 5-digit numbers that between them u ...

  3. Apache-Tika解析JPEG文档

    通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理JPEG格式的图片,如下: package com.mengyao.tika.app; i ...

  4. JS中timestamp日期类型的转换

    在JS中获取timestamp:var timestamp=Math.round(new Date().getTime()/1000); 在JS中将timestamp转换为Date: Date.pro ...

  5. Spring task任务调度详解

    spring内部有一个task是Spring自带的一个设定时间自动任务调度 task使用的时候很方便,但是他能做的东西不如quartz那么的多! 可以使用注解和配置两种方式,配置的方式如下 引入Spr ...

  6. docker安装lnmp 环境

    docker基础知识请转 docker中文文档:http://docker-doc.readthedocs.io/zh_CN/latest/index.html docker英文文档: https:/ ...

  7. 如何定制Windows系统右键菜单

    今天心血来潮把几个自己常用的工具定制到了系统的右键菜单.包括notepad++,7zip,还有复制文件全路径和文件夹路径.下面简单介绍一下步骤. 1. Windows系统右键菜单对应的注册表位置 Wi ...

  8. mysql group by的用法 注意

    group by 用法: 官方的解释:select 后面的字段必须出现在 group by 后面, 除非是聚合,sum,或者count 但是如果 是多表联查, SELECT    c.`name` A ...

  9. Android(java)学习笔记247:ContentProvider使用之利用ContentProvider备份和还原手机短信(掌握)

    1.通过阅读系统源码我们知道: 短信的内容提供者: content://sms/            系统短信的内容提供者的路径 2. 利用ContentProvider备份和还原手机短信: (1) ...

  10. 使用搬瓦工搭建javaweb环境

        /* 本文是基于搬瓦工vps的centos-6-x86_64的Linux系统搭建. 需准备的工具:1.putty(用于连接Linux系统)  2.WinSCP(搬瓦工官方提供的ftp上传下载工 ...