1.【关于call】
作用:是用来改变this指向的,有两种参数
第一种:第一个参数,用来改变this指向
第二种:给call前面的函数传参,从第二个参数开始,给call前面的函数从左到右一个个的传参,参数以逗号形式分隔;
2.【继承】
①call继承:把父类私有的属性和方法继承给子类私有;跟公有属性无关;
function S{F.call(this)}
②原型链继承:把父类私有和公有的属性,都给了子类公有;把子类公有的作为父类的一个实例;原型链继承:跟子类私有属性无关;
function S(){};
S.prototype=new F;//把子类公有的作为父类的实例;
var s=new S;
console.dir(s);
③冒充继承:把父类私有+公有的的属性都给了子类私有;
   for in 循环只能遍历自定义的属性和方法,拿不到系统的属性和方法,比如constructor;
function S(){

    //for in循环,只能遍历自定义的属性和方法;拿不到系统的属性和方法;
    for(var attr in f){

        this[attr]=f[attr];
    }

}
var s=new S;
④混合继承1:call继承+原型链继承;☆☆☆☆☆
问题:子类私有中有父类私有的,子类公有也有父类私有;
function S(){

    F.call(this);//子类私有继承父类私有;
}
S.prototype=new F;
var s=new S;
⑤混合继承2:call继承+拷贝继承(extend);☆☆☆☆☆☆最常用
function extend(obj2,obj1){

    for(var attr in obj1){

        obj2[attr]=obj1[attr];
    }
    return obj2;}
function S(){

    F.call(this);
}
//公有通过extend方法,进行拷贝继承
extend(S.prototype, F.prototype);
var s=new S;
⑥混合继承3:call继承+Object.create()
function S(){

    F.call(this);
}
function Tmp(){};
Tmp.prototype= F.prototype;
S.prototype=new Tmp;
S.prototype.constructor=S;
var s=new S;
console.dir(s);
3.【prototype和__proto__】
prototype是谁的属性,它起什么作用?__proto__是谁的属性,它有什么作用?prototype和__proto__有什么联系?
prototype是函数数据类型的属性;作用:存放公有属性和方法;
__proto__是对象数据类型的属性;作用:原型链;值:当前实例所属类的原型
prototype和__proto__联系:当前实例通过__proto__找到prototype这个原型;
4.【闭包】
当前函数被调用的时候,会形成一个私有作用域,保护里面的变量不收外界的干扰,函数的这个保护机制,叫做闭包。
作用:1)防止全局变量名的冲突;
           2)封装;
           3)可以在比闭包中通过window.xxx修改全局属性。
5.【回调函数】
定义:把一个函数体作为参数传给另一个函数,
1)被传进来的函数,callback,调用的次数,取决于我们自己的条件;
2)callback()被调用的时候;可以进行传参;
3)callback()被调用的时候,可以改变this的指向;
4)callback()可以有返回值,返回值有几个取决于条件;
var obj={};
function fn(a){

    //a 代表的就是 f1这个函数;
    var ary=[];
    for(var i=0; i<4; i++){

        var res=a.call(obj,2,3);//f1();
        ary.push(res);
    }

    console.log(ary);
}

fn(function (n,m){

    alert(this+(n+m));
});
 
6.【总结this指向】
1)当前元素被触发的时候,会调用一个函数,函数中的this指向当前这个元素;
2)函数被调用的时候,点前面是谁,this就是谁;
3)自执行函数中的this,是window;
4)
7.【forEach】
* item:数组中的每一项;
* index:索引;
* input:原始数组;
* */
/*
* forEach():作用-》遍历数组中的每一项;
* forEach()有两个参数:参1:回调函数; 参2:用来改变this指向的;
* forEach()中的回调函数,有三个参数:
*   item->数组中的每一项内容
*   index->索引;
*   input:原始数组;
*forEach()中回调函数的执行次数,取决于数组的长度;
*forEach():没有返回值;
* */
//map的使用方式,跟forEach一样,但是,map有返回值;返回值是一个数组;数组中记录了每个回调函数的返回值;
/*var res=ary.forEach(function (item,index,input){
    console.log(this)
},obj);*/
var res=ary.map(function(item,index,input){

    console.log(this);
    return item*100;//1000 2000
},obj);
console.log(res);

JS学习:第一周——NO.4继承的更多相关文章

  1. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

    [吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [  ]AI为我们的家庭和办公室的个人设备供电 ...

  2. 201671010140. 2016-2017-2 《Java程序设计》java学习第一周

       java学习第一周        本周是新学期的开端,也是新的学习进程的开端,第一次接触java这门课程,首先书本的厚度就给我一种无形的压力,这注定了,这门课程不会是轻松的,同时一种全新的学习方 ...

  3. Java学习第一周

    第一周学习了JDK的安装和环境的配置,初步了解了Java与C的不同之处,学习了Java的变量.基本数据类型.以及面向对象的基础.并且自行完成了一些简单Java程序的编写. (1)学习了为什么使用抽象类 ...

  4. 20165213 java学习第一周

    20165213 -2018-2<Java程序设计>第一周学习总结 教材学习内容总结 java的四个特点:面向对象.平台无关性.动态性.简单. java编写程序步骤:再有jdk的情况下,先 ...

  5. Java学习第一周博客

    20145307<Java程序设计>第一周学习总结 教材学习内容总结 首先学习安装Java有两种方法,一种是用Eclipse直接编辑输出,另一种方法是用记事本之后用win+G开启cmd运行 ...

  6. H5学习第一周

    已经接触H5一个周了,经过学习,总算对H5有了一些了解和认知,下面就总结一下我对H5的认知和感悟. 首先接触的是H5的常用标签[meta],它有其以下常用属性 1.charset属性.单独使用,设置文 ...

  7. Three.Js学习第一天

    因为工作需求,最近接触到了ThreeJs库,国内学习文档的确少,所以在这里写下bolgs记录学习史,并且给后面学习的人尽一份微博之力. 3D场景依靠WebGL技术.目前支持比较好的浏览器,谷歌.火狐. ...

  8. Java学习第一周心得体会

    一周的学习很快就过去了,说说我个人的总结吧! 下面几个是我觉得需要牢牢记住的 1.Java的执行机制:先编译.再解释 2.变量以及基本数据类型 3.强类型编程语言:要求变量的类型与值的类型要一致 4. ...

  9. JS学习第一课

    1.js 按照编写顺序执行 2.输出使用document.write. 3.申明数组 var array = [1,2,3,5] ;  var arrStr = ["sgsg",& ...

随机推荐

  1. spring3 DI基础

    Spring IOC容器的依赖有两层含义:Bean依赖容器和容器注入Bean的依赖资源: Bean依赖容器:bean要依赖于容器,这里的依赖是指容器负责创建Bean并管理bean的生命周期.正是由于由 ...

  2. python3条件控制if

    Python条件语句是通过一条或多条语句的执行结果(为真或假)来决定执行哪部分代码. if语句 if语句的一般形式如下: if 条件1: 语句1 elif 条件2: 语句2 else: 语句3 其意思 ...

  3. PAT 1049. 数列的片段和(20)

    给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1 ...

  4. SpringMVC(四) RequestMapping请求方式

    常见的Rest API的Get和POST的测试参考代码如下,其中web.xml和Springmvc的配置文件参考HelloWorld测试代码中的配置. 控制类的代码如下: package com.ti ...

  5. 【VS】vs修改大小写快捷键

    选中一段英文 改成小写:Ctrl+U 改成大写:Ctrl+Shift+U

  6. php代码小实例

    php多图上传 <html> <meta http-equiv="Content-Type" content="text/html; charset=u ...

  7. ajax的简单介绍

    响应主体,就是服务器给我们返回的结果内容(浏览器里的responsive) 请求主体,是我们给服务器的数据 输入域名发起一次请求,得到的可能是标签,标签可能还要在发一次请求 post怎么发请求:for ...

  8. iOS中常用的宏定义

    转自http://www.jianshu.com/p/be00c3f3cafd //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[N ...

  9. Sensitive directory/file Integrity Monitoring and Checking

    catalogue . OSSEC . HashSentry: Host-Based IDS in Python . Afick . 检测流程 1. OSSEC OSSEC is an Open So ...

  10. Chrome 开发工具之Network

    经常会听到比如"为什么我的js代码没执行啊?","我明明发送了请求,为什么反应?","我这个网站怎么加载的这么慢?"这类的问题,那么问题既然 ...