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. [No0000A5]批处理常用命令大全

    1.Echo 命令打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.语法echo [{on|off}] [message]Sample: echo off e ...

  2. BZOJ 1927: [Sdoi2010]星际竞速

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2051  Solved: 1263[Submit][Stat ...

  3. Spring框架值注解

    注解配置概括 Spring可以按指定的包路径扫描内部的组件,当发现组件类定义前有一下的注解标记,会将该组件纳入Spring容器中. 1)@Component(其他组件) 2)@Controller(A ...

  4. [LeetCode] 3Sum Closest 最近三数之和

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...

  5. Ajax入门(二)

    接收服务器返回的消息 1,定义触发Ajax的js效果 2,创建Ajax方法 如果返回的数据是XML,则需使用aj.responseXML 3,接收服务器返回的消息,并显示在网页上 错误案例:直接接收服 ...

  6. 【教程】CDQ套CDQ——四维偏序问题

    前言 上一篇文章已经介绍了简单的CDQ分治,包括经典的二维偏序和三维偏序问题,还有带修改和查询的二维/三维偏序问题.本文讲介绍多重CDQ分治的嵌套,即多维偏序问题. 四维偏序问题       给定N( ...

  7. sql语句-备忘

    -- 清空全部数据,不写日志,不可恢复,速度极快truncate table 表名; -- 清空全部数据,写日志,数据可恢复,速度慢delete from 表名;   --从一个数据库复制一张表带另一 ...

  8. java-w3c.document生成xml文件

    案例 /** * 创建和写入xml * @param xmlrootname * @param waitConverList */ private void createAndWriterXML(St ...

  9. web.xml加载顺序

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  10. tomcat7下对HTTPS的部署配置

    1.申请CA证书,可以在腾讯云或者阿里云申请到免费的CA,不过前提是,你要有太服务器和域名,并且解析过域名. 2.下载申请到的CA证书到本地,在tomcat7上进行相关配置. 3.Tomcat 证书部 ...