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. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

  2. Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

    怪异模式和严格模式(译注:一般称为标准模式:Standards Mode,下文中的严格模式都可以理解为标准模式)是浏览器解析CSS时的两种‘模式’.这篇文章将简单阐述这两种模式之间的差异. 译注:一个 ...

  3. 利用sharding-jdbc分库分表

    sharding-jdbc是当当开源的一款分库分表的数据访问层框架,能对mysql很方便的分库.分表,基本不用修改原有代码,只要配置一下即可,完整的配置参考以下内容: <?xml version ...

  4. [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字

    Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  5. [LeetCode] The Skyline Problem 天际线问题

    A city's skyline is the outer contour of the silhouette formed by all the buildings in that city whe ...

  6. [LeetCode] Multiply Strings 字符串相乘

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  7. hihocoder -1121-二分图的判定

    hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...

  8. 理解C# 4 dynamic(4) – 让人惊艳的Clay

    Clay非常类似于ExpandoObject, 可以看做是ExpandoObject的加强版. 它们能够让我们在不需要定义类的情况下,就构建出我们想要的对象.Clay和ExpandoObject相比, ...

  9. php use memcached in ubuntu 14.04

    I assume you already had a lamp environment first step,we must to install memched in our Ubuntu Syst ...

  10. C#-WebForm-纯HTML提交方式

    此方法常用于 纯.html页面向数据库添加数据 在.aspx网页中可以通过传值的方式提交信息,如何在.html网页中提交数据? 提交数据需要在同一个 form 中,用到两个属性:action.meth ...