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. [No000095].Net入门级逆向工程-1.SpreadsheetGear汉化

    一.SpreadsheetGear汉化 最近,我们的有个项目要用到表格功能,由于历(la)史(ji)遗(kuang)留(jia)的问题,我们不得不用第三方的一个插件SpreadsheetGear来实现 ...

  2. SqlServer按中文数字排序

    表数据: 按名称排序 并不能得到一二三四五六的顺序 select * from LiWei order by name 找到中文数字在'一二三四五六七八九十'的位置 select id,name,SU ...

  3. .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

    在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...

  4. Android相关小知识搜集

    adb devices得到????????????错误结果 问题: 执行adb devices后,得到如下结果:????????????        device 相关背景: AOSP:Androi ...

  5. 【C#】菜单功能,将剪贴板JSON内容或者xml内容直接粘贴为类

    VS 2015菜单功能,将剪贴板JSON内容或者xml内容直接粘贴为类

  6. C文件读写

    0. 文件操作相关函数 1.  文件分为字符方式读写,字节方式(二进制方式)读写 fprintf / fscanf FILE * file; //全局定义 void save(Book books[] ...

  7. 用css3做一个正方体

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 【bzoj4518】 Sdoi2016—征途

    http://www.lydsy.com/JudgeOnline/problem.php?id=4518 (题目链接) 题意 给出n个连续的整数,求将它们分成m段,求最小方差*m^2. Solutio ...

  9. supermap布局设定地图网格及布局网格

    地图网格设定 LayoutElements elements = m_mapLayoutControl.MapLayout.Elements; //构造GeoMap GeoMap geoMap = n ...

  10. XPath 学习二: 语法

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...