在codefordream上进入中级学习后,感觉立马从js的基础学习往前跳了好远,上面的东西好像都是第一次看到一样.这时候才发现,说来也曾接触过js,但是这时候才发现对js的认识就停在知道两点:js中用var定义变量,用function定义函数!这时候有点羞愧了,说来真是对不起老师们的教导!之前接触js是用于编写网页,当时在dreamwever上编写网页很多功能都没有自己动手用函数实现,而是直接拖动组件等方法创建的,导致好像真的除了看到过js代码,自己还真的居然没有写过!


中级部分主要有:代码运行规则,类和对象,this引用,原型继承,和回调函数等需要学习的知识.

A.关于this引用:

1.函数调用模式的时候,this指向window.

2.方法调用模式的时候,this指向方法所在的对象

3.构造函数模式的时候,this指向新生成的实例

4.apply/call调用模式的时候,this指向apply/call方法中的第一个参数

对于一个函数,我们可以通过调用该函数(注意函数也是对象)的apply方法,来将该函数内部的this引用指向一个特定对象.eg:

 function Tool(name, usage){
this.name = name;
this.usage = usage;
this.get_info = function() {console.log("This is " + this.name + ", the usage of it is " + this.usage + ".");};
}
var cycling = new Tool("cycling","transport");
function display(date){
console.log(this.name+","+this.usage+","+date);
}
display.apply({name:"cycling",usage:"transport"},[]);
//cycling,transport,1970

B.关于类和对象:JS中有一种类似于'类'功能的函数,叫构造函数 ,构造函数是一种可以用来生成对象的函数.JS中的对象是一组属性的无序集合,每个属性可以是 一种简单数据类型值或者一个对象或者一个函数.eg:

 var Robot = { //构造函数 Object() 生成一个对象 Robot
birthday:'1970年1月1日',
name:'DeepSky',//定义 name 和 birthday 两个属性
say_hello:function(){console.log("我的名字叫"+this.name+",是一个出生在"+this.birthday+"的机器人.");} //为该对象添加 say_hello 方法,使该方法能够在console输出一句包含 name 和 birthday 属性值的话,
};

C.关于回调函数

在Javascript中,函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回。

 //全局变量
var info = []; //普通的show函数,将数据的内容打印到控制台
function show(data){
info.push(data);
//如果是可以直接输出的字符串则直接输出
if ( typeof data === "string")
{
console.log(data);
}
else if ( typeof data === "object"){
//遍历data
for(var item in data){
console.log(item + ": " + data[item]);
}
}
} //定义一个接收两个参数的函数,参数中后面一个是回调函数, 在函数体中调用回调函数,并将第一个参数传入回调函数.
function get_inputs(data,callback){
callback(data); }
//当我们调用get_inputs函数时,我们将show函数作为一个参数传递给它
//因此show将会在get_inputs函数内被回调(或者执行)
get_inputs({name:"bower",speciality:"Robot"}, show);
//最后会输出以下的内容:
//name: bower
//speciality: Robot

D.关于原型和对象:

自己觉得理解上有一些问题,随后了解清楚一点,会再补上!

这里有其他朋友的理解:http://www.cnblogs.com/wfsovereign/p/4276694.html

我的JS 中级学习篇的更多相关文章

  1. JS基础学习篇(一)

    近来一直在学习js和jquery.刚刚进入前端工作还没有多久,虽然大学里学习的是编程自认为也学的还可以,但前端接触的不多,一直认为前端十分简单.其实不然,特别是工作的时候要自己设计一个完整的项目前端, ...

  2. js学习篇1--数组

    javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...

  3. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  4. js 正则学习小记之匹配字符串字面量优化篇

    昨天在<js 正则学习小记之匹配字符串字面量>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯后用 [^"] 才能匹配成功 ...

  5. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  6. Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  7. js 正则学习小记之左最长规则

    原文:js 正则学习小记之左最长规则 昨天我在判断正则引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的结果是 'nfa'.其实我们的本意是想得到整 ...

  8. Ext JS 6学习文档–第1章–ExtJS入门指南

    Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...

  9. 包学会之浅入浅出Vue.js:结业篇(转)

    蔡述雄,现腾讯用户体验设计部QQ空间高级UI工程师.智图图片优化系统首席工程师,曾参与<众妙之门>书籍的翻译工作.目前专注前端图片优化与新技术的探研. 在第一篇<包学会之浅入浅出Vu ...

随机推荐

  1. Servlet_ResponseHeader

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  2. 子窗口url调整导致父窗口刷新

    2014年3月19日 10:22:38 如题: 在弹窗里搜索时,url发生改变,导致父窗口的div消失.为何? 之前的逻辑是隐藏div 现在修改为插入节点 .可是还是刷新字窗口后,父窗口里面的div节 ...

  3. KMP之我见

    第二次看kmp,才有点搞懂这个算法(我真是太弱了,就该orz陈老师和龙老师): kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置.常规方法 ...

  4. jQuery的each函数

    http://www.cnblogs.com/xiaojinhe2/archive/2011/10/12/2208740.html http://www.cnblogs.com/mabelstyle/ ...

  5. Flex中escape/encodeURI/encodeURIComponent的区别

    Flex中提供了三种转码函数,各有各的区别, escape,encodeURI,encodeURIComponent 这三个函数不仅在flex中有道运用在javascript中同样的含义 ,今天我仔细 ...

  6. Select与Epoll比较

    一.问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一个描述符上面,另外的描述符虽然有数据但是不能读出来,这样实时性不能满足要求,大概的解 ...

  7. 基于ASIO的协程库orchid简介

    什么是orchid? orchid是一个构建于boost库基础上的C++库,类似于python下的gevent/eventlet,为用户提供基于协程的并发模型. 什么是协程: 协程,即协作式程序,其思 ...

  8. 基于ASIO的协程与网络编程

    协程 协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态.协程可以在运行期间的某个点上暂停执行,并在恢复运行时从暂停的点上继续执行. 协程 ...

  9. React快速入门教程

    简介 Facebook官网介绍:React 是一个用来构建用户界面的 JavaScript 库.相当于 MVC 架构的 V 层. React 的核心思想是:封装组件,各个组件维护自己的状态和UI,当状 ...

  10. 抓取QQ空间相册

    某天,想下载某人的相册,发现一张一张下载,工作量巨大,所以写了这个工具. 使用到的工具 Fiddler(抓包工具) python(脚本语言) intellij 步骤 分析包 获取相册分类链接信息 打开 ...